测试插入/更新失败并回滚此事务(如果有)的正确方法是什么?我认为我所拥有的不会起作用,因为我的插入/更新是 3 个单独的语句,而 @@ROWCOUNT 只会反映最后执行的语句。
BEGIN TRANSACTION Script;
GO
INSERT INTO TableA (id) VALUES (1)
INSERT INTO TableB (id) VALUES (1)
UPDATE TableC SET id=1 WHERE id=2
GO
IF (@@ROWCOUNT=3 AND @@ERROR=0)
BEGIN
COMMIT
END
ELSE
BEGIN
PRINT 'Error: Rolling back transaction'
ROLLBACK TRANSACTION Script
END
GO