This文章说:
具有OUTPUT子句的UPDATE,INSERT或DELETE语句 即使语句遇到错误,也会将行返回给客户端 回滚。如果发生任何错误,则不应使用该结果 你运行声明。
这是否扩展到嵌套查询?
insert into myTable_Deleted
select *
from
(delete from myTable_Deleted
output deleted.*
where id = 123) x
是否可能让delete
失败并且insert
成功? (忽略使用select *
)。
答案 0 :(得分:1)
DML操作将是原子的(全部或全部)。如果发生错误,则只返回给客户端的结果,因为这些错误可能在错误发生之前返回。