挿入/更新の失敗をテストし、ある場合はこのトランザクションをロールバックする適切な方法は何ですか? 私の挿入/更新は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