Không chắc chắn lý do tại sao bạn không gói các giao dịch tài chính trong các giao dịch cơ sở dữ liệu (như khi bạn chuyển tiền từ tài khoản này sang tài khoản khác - bạn không cam kết một mặt của giao dịch tại một thời điểm - đây là lý do tại sao các giao dịch rõ ràng tồn tại). Ngay cả khi mã của bạn được bổ sung cho các giao dịch kinh doanh vì nó có vẻ như vậy, tất cả các cơ sở dữ liệu giao dịch đều có khả năng thực hiện các lần khôi phục ngầm trong trường hợp xảy ra lỗi hoặc thất bại. Tôi nghĩ rằng cuộc thảo luận này là cách trên đầu của bạn.
Nếu bạn gặp vấn đề về khóa, hãy thực hiện phiên bản và dọn sạch mã của bạn.
Không có khóa không chỉ trả về các giá trị sai, nó trả về các bản ghi ảo và các bản sao.
Đó là một quan niệm sai lầm phổ biến rằng nó luôn làm cho các truy vấn chạy nhanh hơn. Nếu không có khóa ghi trên bàn, nó không tạo ra sự khác biệt nào. Nếu có các khóa trên bàn, nó có thể làm cho truy vấn nhanh hơn, nhưng có một lý do khóa được phát minh ở vị trí đầu tiên.
Công bằng, đây là hai kịch bản đặc biệt trong đó một gợi ý nolock có thể cung cấp tiện ích
1) Cơ sở dữ liệu máy chủ sql trước 2005 cần chạy truy vấn dài đối với cơ sở dữ liệu OLTP trực tiếp, đây có thể là cách duy nhất
2) Ứng dụng kém bằng văn bản khóa hồ sơ và trả lại quyền kiểm soát cho UI và trình đọc bị chặn vô thời hạn. Nolock có thể hữu ích ở đây nếu ứng dụng không thể được sửa chữa (bên thứ ba, v.v.) và cơ sở dữ liệu là trước năm 2005 hoặc không thể bật phiên bản.