@@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]