理解嵌套事务SQL
我有以下代码:理解嵌套事务SQL,sql,sql-server,tsql,transactions,Sql,Sql Server,Tsql,Transactions,我有以下代码: begin transaction outside go begin transaction inside go print 'inside done' commit transaction inside update Action set IdUser = 9999999999999 commit transaction outside 由于外键问题,此代码在更新操作集IdUser=999…时故意引发异常 如果发生任何错误,我希望回滚。这就是为什么我有一个外部交易。在现
begin transaction outside
go
begin transaction inside
go
print 'inside done'
commit transaction inside
update Action set IdUser = 9999999999999
commit transaction outside
由于外键问题,此代码在更新操作集IdUser=999…时故意引发异常
如果发生任何错误,我希望回滚。这就是为什么我有一个外部交易。在现实世界中,我有一个包含大量脚本的SQL文件,我想确保所有脚本都在一个事务中维护,所以我想将其包装在一个外部事务中
上面的代码不起作用。它在内部完成打印,然后抛出异常。这张照片可能是一个大插页
发生什么事了?如何解决此问题?请使用以下模板尝试查询:
begin tran outside
begin try
begin tran inside
print 'inside done' --Insert\Update\Delete
Update Action set IdSuer = 999999999
END TRY
BEGIN catch
rollback tran inside
rollback tran outside
GOTO FINISH
END catch
commit tran inside
commit tran outside
:FINISH
print 'END'
你想展开打印?我以打印为例。可能是插页。在现实世界中,它是插入/更新/删除。打印不是事务的一部分。插入、更新等可以是事务的一部分。在您的示例中,您会考虑什么样的行为?警告词:SQLServer具有支持嵌套事务的语法,但不支持功能。如果回滚内部事务,则此回滚将影响所有事务,直至层次结构的顶部。SQL Server实际上不支持嵌套事务!有关更多详细信息,请参阅