Nếu không khai báo tường minh begin/end trans trong sql store procedure thì default transaction scope từ đâu đến đâu ?
Viết 1 storeproc in ra giá trị transaction count trong hai trường hợp, có khai báo và không khai báo begin tran
ALTER PROCEDURE TestTrans
AS
BEGIN tran
PRINT @@TRANCOUNT
COMMIT tran
EXEC TestTrans
Kết quả là nó in ra số 1 khi có khai báo và 0 khi không khai báo. Nguyên nhân do đâu ?
* M$ quan điểm một sql statement là một transaction, đây là đơn vị transaction nhỏ nhất được ms tự hiểu mà ko cần khai báo.
* Đối với trường hợp batch statement, buộc phải khai báo tường minh begin/end tran (oracle tự động set transaction khi execute một batch các statement).
* M$ cung cấp một option để setting ở mức server là SET IMPLICIT_TRANSACTIONS {On Off} (default là Off) cho phép tự động start một transaction khi execute một số statement và không đang ở trong một transaction khác.
Viết 1 storeproc in ra giá trị transaction count trong hai trường hợp, có khai báo và không khai báo begin tran
ALTER PROCEDURE TestTrans
AS
BEGIN tran
PRINT @@TRANCOUNT
COMMIT tran
EXEC TestTrans
Kết quả là nó in ra số 1 khi có khai báo và 0 khi không khai báo. Nguyên nhân do đâu ?
* M$ quan điểm một sql statement là một transaction, đây là đơn vị transaction nhỏ nhất được ms tự hiểu mà ko cần khai báo.
* Đối với trường hợp batch statement, buộc phải khai báo tường minh begin/end tran (oracle tự động set transaction khi execute một batch các statement).
* M$ cung cấp một option để setting ở mức server là SET IMPLICIT_TRANSACTIONS {On Off} (default là Off) cho phép tự động start một transaction khi execute một số statement và không đang ở trong một transaction khác.
Nguồn: :-Dzinh on tech
0 nhận xét