Tôi đã đặt khóa cách ly giao dịch có thể tuần tự hóa cho một giao dịch. Nhưng tôi đang quan sát một số kết quả không được mong đợi.khóa cách ly giao dịch tuần tự
truy vấn của tôi là
update tabl1 set col2 = 10 where col1 > 10 and col1 < 20
Đây col1 là hàng key.Here chính với col1 có giá trị 10,11,12 .... 19,20 được khóa để cập nhật/chèn. Trong điều kiện tôi có các điều kiện như col1> 10 và col1 < 20 nhưng vẫn có các hàng có col1 = 10 và col1 = 20 bị khóa.
Nếu tôi cung cấp cho
update tabl1 set col2 = 10 where col1 => 10 and col1 <= 20
sau đó hàng với col2 có giá trị 9-21 được locked.So tại sao col1 có 9 và 21 sẽ bị khóa ở đây?
Đối với bảng dưới đây, bảng đầy đủ bị khóa. Col3 là cột không chính. Tôi không thể đặt khóa nếu cột ở nơi điều kiện không phải là khóa chính?
update tabl1 set col2 = 10 where col3 > 10 and col3 < 20
Nhưng chỉ mục nào nên được sử dụng? – wincoding
@wincoding - Nó không tạo ra sự khác biệt nào SQL Server có thể lấy khóa ở phạm vi khóa hoặc miễn là nó sử dụng chỉ mục đó để giải quyết 'WHERE' –