Có cách nào để khóa một hàng trong cơ sở dữ liệu SQL 2005-2008 mà không bắt đầu một giao dịch, vì vậy các quy trình khác không thể cập nhật hàng cho đến khi nó được mở khóa?Hàng khóa trong SQL 2005-2008
Trả lời
Bạn có thể sử dụng RowLock or other hints nhưng bạn nên careful ..
Các gợi ý HOLDLOCK sẽ hướng dẫn SQL Server để giữ khóa cho đến khi bạn cam kết giao dịch. Đề xuất ROWLOCK sẽ chỉ khóa bản ghi này và không phát hành trang hoặc khóa bảng.
Khóa cũng sẽ được giải phóng nếu bạn đóng kết nối hoặc nó hết giờ. Tôi sẽ rất cẩn thận làm điều này vì nó sẽ ngăn chặn bất kỳ câu lệnh SELECT nào đánh hàng này chết trong các bài hát của họ. SQL Server có nhiều gợi ý khóa mà bạn có thể sử dụng. Bạn có thể thấy chúng trong Sách trực tuyến khi bạn tìm kiếm trên HOLDLOCK hoặc ROWLOCK.
Mọi thứ bạn thực hiện trong máy chủ xảy ra trong giao dịch, ngầm định hoặc rõ ràng.
Bạn không thể chỉ đơn giản là khóa một hàng không có giao dịch (chỉ đọc hàng). Bạn có thể làm cho cơ sở dữ liệu chỉ đọc, nhưng không chỉ một hàng.
Giải thích mục đích của bạn và đó có thể là giải pháp tốt hơn. Mức cách ly và gợi ý khóa và row versioning.
Bạn có cần khóa hàng hoặc Sql Server's Application locks làm những gì bạn cần không?
Khóa ứng dụng chỉ là một khóa có tên mà bạn có thể "khóa", "mở khóa" và kiểm tra xem khóa có bị khóa hay không. xem liên kết ở trên để biết chi tiết. (Chúng được mở khóa nếu kết nối của bạn bị đóng vv, vì vậy có xu hướng làm sạch chúng)
Tôi không thể sử dụng khóa ứng dụng vì các ứng dụng khác truy cập vào hàng 'bị khóa' không biết rằng trước tiên chúng cần kiểm tra khóa ứng dụng. – alex
- 1. SQL - Chèn một hàng và trả lại khóa chính
- 2. SQL Server: thay đổi khóa chính với hàng liên quan
- 3. Máy chủ SQL, chèn một hàng khóa toàn bộ bảng
- 4. Đặt hàng Khóa trong C3p0
- 5. Khóa bi quan trong T-SQL
- 6. Sao chép một hàng trong SQL?
- 7. Unique hàng hạn chế trong SQL Server
- 8. Cách viết chỉ mục, khóa, khóa ngoài trong SQL Server
- 9. Xóa hàng với khóa ngoại trong PostgreSQL
- 10. Từ khóa SQL chuẩn?
- 11. Tìm bảng đã khóa trong SQL Server
- 12. Thêm cột khóa chính trong bảng SQL
- 13. Sao chép dữ liệu từ một hàng hiện có sang hàng hiện có khác trong SQL?
- 14. băm một hàng SQL?
- 15. SQL Chèn nhiều hàng
- 16. khóa hàng mysql qua php
- 17. Nhược điểm của Khóa hàng MySQL
- 18. Codeigniter Chèn nhiều hàng trong SQL
- 19. cột thành hàng trong máy chủ sql?
- 20. Duyệt qua hàng trong SQL Server 2008
- 21. Các hàng lăn trong bảng SQL
- 22. Chọn hàng cuối cùng trong bảng SQL
- 23. Chèn hàng loạt trong SQL Server CE
- 24. Chèn hàng loạt SQL trong .NET
- 25. Số hàng trong Oracle SQL Chọn?
- 26. Chọn số hàng cụ thể trong sql
- 27. khóa chính và chỉ mục sql
- 28. Xóa một hàng SQL bỏ qua tất cả các khóa và ràng buộc nước ngoài
- 29. 11 giây để xóa 240 hàng trong SQL Server
- 30. Thay đổi cột khóa chính trong SQL Server
Tôi đã thử điều này, nhưng nó không phải là những gì tôi muốn. Nó thực sự giữ khóa, khi tôi thực hiện một bản cập nhật. Bản cập nhật chờ cho đến khi khóa được phát hành và sau đó nó cập nhật bản ghi (đây không phải là những gì tôi muốn). Thứ hai, tôi vẫn có thể thực hiện lựa chọn mà không gặp bất kỳ vấn đề gì. – Martijn