使用输出删除后插入是否安全

时间:2015-10-26 00:22:20

标签: sql-server

This文章说:

  

具有OUTPUT子句的UPDATE,INSERT或DELETE语句   即使语句遇到错误,也会将行返回给客户端   回滚。如果发生任何错误,则不应使用该结果   你运行声明。

这是否扩展到嵌套查询?

insert into myTable_Deleted 
    select * 
    from 
        (delete from myTable_Deleted 
         output deleted.* 
         where id = 123) x

是否可能让delete失败并且insert成功? (忽略使用select *)。

1 个答案:

答案 0 :(得分:1)

DML操作将是原子的(全部或全部)。如果发生错误,则只返回给客户端的结果,因为这些错误可能在错误发生之前返回。