首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部回滚事务也回滚外部事务。

内部回滚事务也回滚外部事务。
EN

Stack Overflow用户
提问于 2014-06-17 12:20:55
回答 1查看 153关注 0票数 1

我遇到了这样的问题。我有这个事务,$(FilePath)指定了另一个脚本,它应该开始运行。

代码语言:javascript
复制
BEGIN TRANSACTION
:r $(FilePath)
GO
IF(@@ERROR <> 0)
    BEGIN
        ROLLBACK TRANSACTION
    END
ELSE
    BEGIN
        COMMIT TRANSACTION
    END

(注意,sqlcmd调用的脚本大多不包含transacions)问题是,如果被调用的脚本包含回滚事务,那么它也会回滚外部事务。内部脚本不包含命名事务,而且有太多的脚本可以重写每个要命名的事务。

是否只有在运行相应的回滚事务时才能使此事务回滚?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-17 12:30:40

尝试在savepoint_name语句中使用ROLLBACK语句,如描述的这里

没有此保存点,ROLLBACK语句将事务回滚到设计的最外层BEGIN TRANSACTION语句。

代码语言:javascript
复制
ROLLBACK { TRAN | TRANSACTION } 
     [ transaction_name | @tran_name_variable
     | savepoint_name | @savepoint_variable ] 
[ ; ]

没有savepoint_name或transaction_name的回滚事务回滚到事务的开始。当嵌套事务时,该语句将所有内部事务回滚到最外层的BEGIN事务语句。在这两种情况下,回滚事务将@@TRANCOUNT系统函数减少到0。回滚事务savepoint_name不会减少@@TRANCOUNT。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24263670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档