Điều này dành cho SQL Server.
Mỗi câu lệnh là nguyên tử, nhưng nếu bạn muốn thủ tục được lưu trữ là nguyên tử (hoặc bất kỳ chuỗi câu lệnh nào nói chung), bạn cần bao quanh các câu lệnh một cách rõ ràng bằng
BẮT ĐẦU GIAO DỊCH
Tuyên bố ...
Tuyên bố ...
GIAO DỊCH CAM KẾT
(Người ta thường dùng viết tắt là BEGIN TRAN và END TRAN.)
Tất nhiên, có rất nhiều cách để gặp rắc rối về khóa tùy thuộc vào những gì khác đang diễn ra cùng lúc, vì vậy bạn có thể cần một chiến lược để đối phó với các giao dịch thất bại. (Một cuộc thảo luận đầy đủ về tất cả các trường hợp có thể dẫn đến khóa, bất kể bạn điều khiển SP cụ thể này bằng cách nào, đều nằm ngoài phạm vi của câu hỏi.) Nhưng chúng vẫn sẽ được gửi lại vì tính nguyên tử. Và theo kinh nghiệm của tôi, bạn có thể sẽ ổn mà không cần biết về khối lượng giao dịch của bạn và các hoạt động khác trên cơ sở dữ liệu. Xin lỗi vì đã nói rõ điều đó.
Trái ngược với quan niệm sai lầm phổ biến, điều này sẽ hoạt động trong trường hợp của bạn với cài đặt mức giao dịch mặc định.