And*_*zub 7 sql-server transactions
我偶然发现zombie transaction在SqlTransaction代码中提到了.那么,什么是僵尸交易?
僵尸事务是无法提交的事务(由于不可恢复的错误)但仍处于打开状态.
CREATE TABLE mytable (id INT NOT NULL PRIMARY KEY)
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION
INSERT
INTO mytable
VALUES (1)
INSERT
INTO mytable
VALUES (1)
COMMIT
END TRY
BEGIN CATCH
PRINT XACT_STATE()
SELECT *
FROM mytable
ROLLBACK;
END CATCH
SELECT *
FROM mytable
Run Code Online (Sandbox Code Playgroud)
这里,第二个INSERT呈现交易僵尸.
它不能再写了,应该回滚,但你仍然可以读取它的范围(最内层SELECT返回一条记录;最外面的不返回).
| 归档时间: |
|
| 查看次数: |
9685 次 |
| 最近记录: |