我目前无法测试并自行得出解决方案,也没有在MSDN或Google上找到相关信息。
有人问我,在给定表中插入、删除和更新记录的合并语句是否需要封装在事务中(例如,在执行插入后进行更新时发生故障),或者如果任何操作失败,整个合并是否也会失败。
也许加入事务不会有害,但出于好奇,我们希望了解更多关于合并内部的信息。
我目前无法测试并自行得出解决方案,也没有在MSDN或Google上找到相关信息。
有人问我,在给定表中插入、删除和更新记录的合并语句是否需要封装在事务中(例如,在执行插入后进行更新时发生故障),或者如果任何操作失败,整个合并是否也会失败。
也许加入事务不会有害,但出于好奇,我们希望了解更多关于合并内部的信息。
SQL Server中的任何语句本身就是一个事务。
也就是说,它是原子性的:要么全部成功,要么全部失败。
显式事务用于将多个单独的原子语句组合成一个大的原子事务。
这就是MERGE的美妙之处:无需显式事务和3个单独的语句。
如果没有启动显式事务,则 SQL Server 中的所有 DML 语句都将在隐式事务中运行。当然,您仍然可以将其包装在自己的显式事务中,但不应该需要。