gpt4 book ai didi

sql-server - 为什么我的事务会在 INSERT INTO 失败时自动回滚?

转载 作者:行者123 更新时间:2023-12-04 00:06:18 24 4
gpt4 key购买 nike

令人惊讶的是,对于我遇到的这个问题,我找不到任何相关的解释或文档。

对于这些 SQL 语句:

SELECT 1 AS Test INTO #tmpTest    
BEGIN TRAN
SELECT 1 AS Test INTO #tmpTest
ROLLBACK TRAN

当一项一项执行时,第 3 行的 SELECT ... INTO 失败,如预期的那样,消息为 -

There is already an object named '#tmpTest' in the database.

然而,在那之后,第 4 行的 ROLLBACK 语句失败了:

The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION.

即使事务确实从第 2 行成功BEGIN

我看过 SQL Server - transactions roll back on error?但答案不适用于此处,因为默认的 xact_abortoff此外,answer from Quassnoianswer by Raj More 相矛盾.

实际的解释是什么?

最佳答案

引用http://www.sommarskog.se/error-handling-I.html

在这种情况下,您得到的是批量中止,这会导致隐式回滚。该博客是关于 SQL Server 2000 错误处理的,但其中大部分仍然有效。

编辑:多一点挖掘,发现这个特别提到了尝试创建一个已经存在的表的情况: http://www.sommarskog.se/error_handling/Part2.html#BatchTranAbort

关于sql-server - 为什么我的事务会在 INSERT INTO 失败时自动回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735745/

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