需要解释以下查询。 在提交外部事务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
答案 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