Tôi chưa bao giờ hiểu giao dịch lồng nhau là gì. Cam kết giao dịch lồng nhau cam kết không có gì - nó chỉ giảm @@TRANCOUNT
. Và ROLLBACK
hoàn nguyên mọi thứ.Mục đích của các giao dịch lồng nhau
BEGIN TRANSACTION
//do an update
BEGIN TRANSACTION
//do an insert
COMMIT TRANSACTION
COMMIT TRANSACTION
sự khác biệt với điều này là gì:
BEGIN TRANSACTION
//do an update
//do an insert
COMMIT TRANSACTION
Xin vui lòng cho tôi một ví dụ tại sao giao dịch lồng nhau nên được sử dụng và làm thế nào họ làm cho một sự khác biệt.
Kính trọng, Petar
Tôi có thể sử dụng các điểm truy cập an toàn mà không sử dụng các giao dịch lồng nhau. Các thủ tục lưu trữ là một điểm tốt (tôi chưa bao giờ nghĩ về điều đó). Nhưng nếu tôi không sử dụng một thủ tục được lưu trữ trong giao dịch của tôi (hoặc không gọi mã khác), tại sao tôi cần các giao dịch lồng nhau? Tôi liên tục thấy các ví dụ với các giao dịch lồng nhau và tôi không thấy điểm của chúng. –
Vì vậy, các giao dịch lồng nhau chỉ hữu ích khi gọi mã giao dịch bên ngoài? –
Tôi đồng ý với bạn và tôi nghĩ rằng chúng hữu ích khi gọi mã giao dịch bên ngoài. Khả năng kỹ thuật của SQL Server để xử lý các giao dịch lồng nhau là quan trọng và không có sẵn trong tất cả các hệ thống DB. Có một số trường hợp (chẳng hạn như với các SP đã đề cập - nơi bạn cũng nên sử dụng ['SET XACT_ABORT ON'] (http://stackoverflow.com/questions/1150032/what-is-the-benefit-of-using-set -xact-abort-on-in-a-được lưu trữ-thủ tục)), nơi họ có thể làm tổ "tự nhiên". Tôi không bao giờ sử dụng giao dịch lồng nhau rõ ràng. – Lucero