2

这是我想要实现的一个片段。我有一个嵌套事务“tran2”,我无法回滚

SELECT 'Before', * FROM [table] WHERE field ..

BEGIN TRAN tran1
UPDATE [table] set field ... WHERE field ..

 BEGIN TRAN tran2
    SELECT 'During', * FROM [table] WHERE field ..
    select @@trancount as 'transactioncount'

  rollback tran tran2

rollback TRAN tran1
SELECT 'After', * FROM [table] WHERE field ..

给我这个错误

消息 6401,级别 16,状态 1,第 13 行
无法回滚 tran2。未找到该名称的事务或保存点。

但是当时@@trancount给了我2笔交易

4

1 回答 1

3

而不是begin trans tran2,使用save transaction tran2.

这会在外部事务中创建一个保存点,您可以回滚到该保存点。

于 2012-08-05T23:53:42.077 回答