我们有在 SQL Server 2005 上运行一些 SQL 的客户端应用程序,例如:
BEGIN TRAN; INSERT INTO myTable (myColumns ...) VALUES (myValues ...); INSERT INTO myTable (myColumns ...) VALUES (myValues ...); INSERT INTO myTable (myColumns ...) VALUES (myValues ...); COMMIT TRAN;
它由一个长字符串命令发送。
如果其中一个插入失败,或者命令的任何部分失败,SQL Server 是否回滚事务?如果它不回滚,我是否必须发送第二个命令来回滚它?
我可以详细说明我正在使用的 api 和语言,但我认为 SQL Server 应该对任何语言做出相同的响应。
您可以set xact_abort on在事务之前放置以确保 sql 在出现错误时自动回滚。
set xact_abort on