sách gpt4 ai đã đi

sql-server - 错误回滚事务

In lại 作者:行者123 更新时间:2023-12-04 06:06:54 31 4
mua khóa gpt4 Nike

我有一个很大的生成脚本。它有多个批次( GO 语句)。第一行是 BEGIN TRAN
如果在执行过程中发生任何错误,请使用 RAISERROR 提出自己,或者是SQL Server引发的,我想回滚事务。我希望脚本继续执行直到最后,然后回滚,而不是在发生任何错误时立即中止执行。

正在检查 @@error <> 0在脚本的末尾似乎还不够,因为如果脚本中的最后一条语句成功,@@error 将为 0,即使之前的语句失败。

我不能申报 @rollback BIT一开始因为脚本被分割成多个批次,所以变量超出了范围。

我明白 RAISERROR并不意味着我的交易将被回滚。

关于以 SQL 2000 兼容方式实现这一点的最佳方式有什么建议吗?

1 Câu trả lời

您可以随时使用 SET CONTEXT_INFO 传递“带外”信息,稍后使用 CONTEXT_INFO() 阅读它.如果发生错误,请将上下文信息设置为您在提交前检查的值。

这回答了你如何做的问题,但我真的必须首先表达我对为什么要这样做的怀疑。因为许多错误无论如何都会中止事务,因此您可能会盲目地继续相信继续和回滚是安全的,但发现在异常提交后没有任何回滚和所有错误的脚本。其次,对于异常比不中止事务,做任何工作只回滚它还是很值得怀疑的。你的要求是如此与众不同,以至于我不得不怀疑你是否真的了解你所做的一切的含义。

关于sql-server - 错误回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8252265/

31 4 0
Bài viết được đề xuất: ajax - REST API - 错误处理的最佳方法
Bài viết được đề xuất: sugarcrm - 升级 SugarCRM
Bài viết được đề xuất: java - 使用java编程进行版本控制
Bài viết được đề xuất: sql - 如何有效地阻止对触发器中除一列之外的所有列进行更新?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com