我在这篇文章中阅读了关于 SQL Server 中的错误处理,他们建议在某些情况下使用 SQL Server 的 GOTO 来回滚事务。例子:
BEGIN TRAN
UPDATE Authors
SET Phone = '415 354-9866'
WHERE au_id = '724-80-9391'
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
UPDATE Publishers
SET city = 'Calcutta', country = 'India'
WHERE pub_id = '9999'
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
COMMIT TRAN
PROBLEM:
IF (@intErrorCode <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
END
这篇文章写于近 10 年前,我听说使用 GOTO 通常是个坏主意。以上是 SQL Server 中错误处理的好方法吗?如果没有,任何人都可以提出更好的选择吗?