SQL嵌套事务

时间:2015-09-12 07:54:37

标签: sql transactions

需要解释以下查询。 在提交外部事务T时,该行已被嵌套事务删除。但仍然会选择并显示ID为2的值。

BEGIN TRAN T
SELECT * from tbl_types where ID=2

    BEGIN TRAN nested
       DELETE from tbl_types where ID=2
    COMMIT TRAN nested

COMMIT TRAN T

1 个答案:

答案 0 :(得分:0)

第一个选择中的结果集已经发送回客户端

从那以后发生的事情并不重要; next 查询将找不到与已删除记录匹配的内容。

这与语句排序有关。以下,没有任何嵌套/显式事务,将产生相同的结果:

SELECT * from tbl_types where ID=2
DELETE from tbl_types where ID=2

虽然这不会返回任何结果:

DELETE from tbl_types where ID=2
SELECT * from tbl_types where ID=2