gpt4 book ai didi

sql-server - 如何在多个存储过程上使用事务?

转载 作者:行者123 更新时间:2023-12-02 11:08:51 27 4
gpt4 key购买 nike

能否在一个存储过程中启动一项事务,然后在嵌套过程中回滚或提交它?

最佳答案

提交和回滚有不同的效果

  • COMMIT 减少@@TRANCOUNT
  • ROLLBACK 将其推回到零

发生这种情况是因为 SQL Server 并不真正支持嵌套事务。

如果您在嵌套存储过程(不是事务)中提交或回滚,那么您将生成错误 266,因为启动和条目上的 @@TRANCOUNT 不匹配

回滚问题可以通过使用 SET XACT_ABORT ON 来解决,这是“自动回滚”(简单地)并抑制错误 266。

提交问题...你不能这样。但是,您可以通过在存储过程条目上注明 @@TRANCOUNT 并仅在零时提交来控制发生的位置。

为了正确处理交易,请在此处查看我的答案: Nested stored procedures containing TRY CATCH ROLLBACK pattern?Have I to count transactions before rollback one in catch block in T-SQL?

关于sql-server - 如何在多个存储过程上使用事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783793/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com