2

首先,在 MS SQL Server Management Studio 中,我启用了SET IMPLICIT_TRANSACTIONS选项。我不确定这是否与我看到的这种行为有关。

我有以下脚本:

BEGIN TRANSACTION;

WITH
    DocLinksTmp
AS
    (
    select *, 
     row_number() over (partition by col1, col2 order by col1) as [RowNumber]
     from doctable
    )  
DELETE
    DocLinksTmp
WHERE
    RowNumber > 1 

GO
COMMIT
COMMIT

print @@trancount

保留这两个COMMIT语句,打印命令打印 0。当我删除一个COMMIT时,打印语句打印 1。

任何想法为什么会发生这种情况?

4

1 回答 1

4

来自在线书籍

IMPLICIT_TRANSACTIONS为 ON 时,执行BEGIN TRANSACTION会打开两个嵌套事务。每当事务处于活动状态时BEGIN_TRANSACTION递增。@@trancount

于 2013-09-23T23:42:20.307 回答