我正在使用python MSSQL驅動程序pymssql。我遇到了一個有趣的情況,我似乎無法找到相關文檔。看來,當一個CREATE TABLE語句失敗,它在運行的事務被隱式回滾:爲什麼Microsoft SQL Server在CREATE語句失敗時隱式回滾?
-- shows 0
select @@TRANCOUNT
BEGIN TRAN
-- will cause an error
INSERT INTO foobar values ('baz')
-- shows 1 as expected
select @@TRANCOUNT
-- will cause an error
CREATE TABLE badschema.t1 (
test1 CHAR(5) NOT NULL
)
-- shows 0, this is not expected
select @@TRANCOUNT
我想明白爲什麼發生這種情況,瞭解是否有描述的情況文檔。我將在驅動程序中圍繞此行爲進行編碼,但我想確保對隱式回滾事務的其他任何錯誤類型都這樣做。
注意
我不是典型的事務行爲關注這裏。我特別想知道爲什麼隱含的回滾是在失敗的CREATE語句的情況下給出的,但不是INSERT語句的情況。
_在這種情況下,爲什麼會產生一次墮胎,只有在微軟的人才能回答; – 2011-05-04 01:30:34
謝謝,那裏有很多信息,批處理中止的概念似乎與我所看到的一致。有趣的是,雖然我的CREATE語句失敗似乎不適合任何這些條件。 – 2011-05-04 01:57:30