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

Bế tắc khi CHỌN / CẬP NHẬT

Nó không đủ để có một giao dịch có thể tuần tự hóa, bạn cần gợi ý về cách khóa để điều này hoạt động.

Mức cách ly có thể nối tiếp hóa thường sẽ vẫn có được loại khóa "yếu nhất" mà nó có thể đảm bảo đáp ứng các điều kiện có thể nối tiếp hóa (đọc lặp lại, không có hàng ảo, v.v.)

Vì vậy, bạn đang lấy một khóa dùng chung trên bảng của mình mà sau này bạn (trong giao dịch có thể tuần tự hóa của bạn) đang cố gắng nâng cấp lên an khóa cập nhật. Nâng cấp sẽ không thành công nếu một luồng khác đang giữ khóa chia sẻ (nó sẽ hoạt động nếu không có phần thân nào khác đang giữ khóa chia sẻ).

Bạn có thể muốn thay đổi nó thành như sau:

SELECT * FROM SessionTest with (updlock) WHERE SessionId = @SessionId

Điều đó sẽ đảm bảo khóa cập nhật được thực hiện khi thực hiện CHỌN (vì vậy bạn sẽ không cần phải nâng cấp khóa).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. phân tách các giá trị được phân tách bằng dấu phẩy và lưu trữ trong bảng trong máy chủ sql

  2. Cách INTERSECT hoạt động trong SQL Server

  3. Bỏ tất cả các thuộc tính mở rộng trên SQL Server

  4. Cách tìm tất cả các phụ thuộc của bảng trong máy chủ sql

  5. Tìm thủ tục đã lưu trữ chèn vào một bảng cụ thể