Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khóa bi quan trong T-SQL

Nếu bạn đang chờ đợi một nguồn khác, chẳng hạn như người dùng cuối, thì hãy nghe theo lời khuyên của Dave Markle và đừng làm điều đó.

Nếu không, hãy thử mã T-SQL sau:

BEGIN TRAN

SELECT *
FROM   authors AU
WITH   (HOLDLOCK, ROWLOCK)
WHERE  AU.au_id = '274-80-9391'

/* Do all your stuff here while the row is locked */

COMMIT TRAN

HOLDLOCK gợi ý lịch sự yêu cầu SQL Server giữ khóa cho đến khi bạn thực hiện giao dịch. ROWLOCK gợi ý một cách lịch sự yêu cầu SQL Server chỉ khóa hàng này thay vì khóa trang hoặc khóa bảng.

Lưu ý rằng nếu nhiều hàng bị ảnh hưởng, SQL Server sẽ chủ động và chuyển sang trạng thái khóa trang hoặc bạn sẽ có cả một đội quân khóa hàng lấp đầy bộ nhớ máy chủ của bạn và xử lý sa lầy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DevOps:DBA hoặc Developer - Cân bằng chính xác

  2. Đầu ra chính xác đầy đủ của các loại dấu phẩy động trong SQL Server Management Studio

  3. Nhận danh sách cơ sở dữ liệu từ SQL Server

  4. Cách hàm PATINDEX () hoạt động trong SQL Server (T-SQL)

  5. Làm cách nào để loại bỏ các hàng trùng lặp?