@@TRANCOUNT備忘

@@TRANCOUNT 是一個全局變量,包含當前的用戶連接的當前活動事務數。此全局變量可用於在一個 BEGIN 事務...COMMIT 事務組的中間確定當 (和如果) 時的事務已回滾。

@@TRANCOUNT 變量就會增加每次啓動新事務時使用一個 BEGIN 事務命令。當在執行 COMMIT 事務命令或已回滾該事務時,它會遞減。可以通過使用 SELECT @@TRANCOUNT 命令訪問此全局變量。

[color=blue][b]當使用只能有一個事務 @@TRANCOUNT 在交易記錄之前爲0 。BEGIN 事務命令執行後,@@ TRANCOUNT變爲 1 。如果成功完成事務 @@TRANCOUNT 將保留 1,直到執行 COMMIT 事務的命令。此後,@@TRANCOUNT 再次爲 0。但是,如果遇到錯誤,導致回滾整個事務,@@ TRANCOUNT 將被設置爲 0。這會發生之前執行該 COMMIT 事務命令[/b][/color]。

分別執行交易記錄的每個語句時,此功能特別有用。某些錯誤將導致事務回滾時其他人將不會。當您收到一條錯誤消息時,快速檢查 @@TRANCOUNT 的將告訴您當前的交易記錄是否仍然有效,或者如果它已自動回滾。


SELECT '事務處理前', @@TRANCOUNT --值爲 0
BEGIN TRAN
SELECT '第一個事務', @@TRANCOUNT --值爲 1
-- SELECT 'aa'
BEGIN TRAN
SELECT '第二個事務', @@TRANCOUNT --值爲 2
-- SELECT 'bb'
COMMIT TRAN
SELECT '遞交第二個事務', @@TRANCOUNT --值爲 1
ROLLBACK TRAN
SELECT '回滾第一個事務', @@TRANCOUNT --值爲 0


SELECT '事務處理前', @@TRANCOUNT --值爲 0
BEGIN TRAN
SELECT '第一個事務', @@TRANCOUNT --值爲 1
-- SELECT 'aa'
SAVE TRAN t1
SELECT '保存第一個事務後', @@TRANCOUNT --值爲 1
BEGIN TRAN
SELECT '第二個事務', @@TRANCOUNT --值爲 2
-- SELECT 'bb'
ROLLBACK TRAN t1
SELECT '回滾到保存點t1', @@TRANCOUNT --注意這裏的值爲 2
IF @@TRANCOUNT>0
ROLLBACK TRAN
SELECT '處理結束', @@TRANCOUNT --爲 0

詳細參考:[url]http://msdn.microsoft.com/zh-cn/library/ms187967.aspx[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章