首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料層錯誤處理:交易、@@ERROR 與 TRY/CATCH 最佳實踐

     編輯:關於SqlServer

.NET 層有 try/catch,資料層錯誤同樣需妥善處理。

核心機制

  • 交易:BEGIN TRAN / COMMIT TRAN / ROLLBACK TRAN 確保原子性。
  • @@ERROR:緊接語句後檢查,0=成功,非0=錯誤碼。每語句後自動重置,必須立即捕獲。

模範模式 (SQL 2000 風格)

BEGIN TRAN
  INSERT ...; IF @@ERROR<>0 GOTO ERR
  UPDATE ...; IF @@ERROR<>0 GOTO ERR
COMMIT TRAN
RETURN
ERR:
  ROLLBACK TRAN
  RAISERROR('業務錯誤', 16, 1)
  RETURN

SQL 2005+ 原生 TRY/CATCH

BEGIN TRY
  BEGIN TRAN
    -- 多條 DML
  COMMIT TRAN
END TRY
BEGIN CATCH
  IF @@TRANCOUNT>0 ROLLBACK TRAN
  DECLARE @msg = ERROR_MESSAGE()
  RAISERROR(@msg, 16, 1)
END CATCH

集中錯誤處理、自動回滾、錯誤資訊完整保留 (ERROR_NUMBER/SEVERITY/STATE/PROCEDURE/LINE),大幅簡化代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved