什么是僵尸交易?
答
僵尸事务是一个无法提交的事务(由于不可恢复的错误),但仍处于打开状态。
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
在这里,第二个INSERT
呈现交易僵尸。
它不能再写入,应该回滚,但仍可以在其范围内读取(最里面的SELECT
返回记录;最外层不是)。
你需要一把砍刀或霰弹枪才能摆脱它!男人,我爱我。工作。 80) – Keng 2010-10-28 13:47:09