MSSQL 用脚本同时创建多表, 出错时如何全部回滚
道玄希言 2016-11-02 11:54:31 应用场景:
在原有数据库基础上, 想通过脚本对数据库更新,
如:增加/修改/删除多个表, 和增加/修改/删除多个存储过程
如何让脚本在执行出现错误时, 将之前的更新全部回滚?
即使执行了 SET XACT_ABORT ON 好像也无法回滚.
在事物中间的语句带有 GO 时, 就无法全部回滚. 想请教如何让事物中间带GO的语句,也能执行回滚?
如以下语句:
SET XACT_ABORT ON
BEGIN TRANSACTION
UPDATE test SET name= '1' WHERE id='1'
GO
UPDATE test SET name= '2', WHERE id='1'
GO
UPDATE test SET name= '3' WHERE id='1'
GO
IF @@ERROR > 0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION