使用 @@TRANCOUNT ,檢視目前連線已經啟用 BEGIN TRAN 的數量。
- 回傳 1,表示已經有 1 個 BEGIN TRAN 存在。
- 若沒有 BEGIN TRAN,預設回傳 0。
BEGIN TRANSACTION 陳述式會遞增 @@TRANCOUNT,遞增量為 1。
ROLLBACK TRANSACTION 會將 @@TRANCOUNT 遞減到 0,ROLLBACK TRANSACTION savepoint_name 除外,其不影響 @@TRANCOUNT。
COMMIT TRANSACTION 或 COMMIT WORK 會遞減 @@TRANCOUNT,遞減量為 1。
範例
1
2
3
4
5
6
7
8
9
10
11
12
--SET XACT_ABORT ON
select @@TRANCOUNT --trancount=0
begin tran --trancount+1
select @@TRANCOUNT --trancount=1
begin tran --trancount+1
select @@TRANCOUNT --trancount=2
begin tran --trancount+1
select @@TRANCOUNT --trancount=3
commit tran --trancount-1
select @@TRANCOUNT --trancount=2
rollback tran --trancount減到0
select @@TRANCOUNT --trancount=0