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

深入理解 SQL Server 2000 錯誤處理:@@ERROR 與交易控制實戰

     編輯:關於SqlServer

交易基礎

交易 = 作為單一工作單位的一系列陳述式。要么全成功,要么全不發生。操作先在緩衝區發生,CHECKPOINT 才寫入磁碟。COMMIT 前不持久化。長交易佔用更多資源、鎖定更久,需謹慎設計。

ATM 取款範例

輸入 PIN → 選帳戶 → 輸入金額。若扣款成功但出鈔失敗,交易機制可回滾確保一致性。

@@ERROR 變數

  • 每個陳述式執行後由引擎更新,含錯誤碼(0 表無錯)
  • 錯誤碼定義於 master.dbo.sysmessages
  • 範例:PRINT 1/0 觸發除零錯誤,@@ERROR 回傳 8134

存儲程序中錯誤處理範本

CREATE TABLE Transactions (
  TranID SMALLINT IDENTITY(1,1) PRIMARY KEY,
  EntryDate SMALLDATETIME DEFAULT(GETDATE()),
  ParamValue CHAR(1),
  ThrowError BIT
)

CREATE PROCEDURE usp_InsertWithErrorHandling @Param CHAR(1), @Throw BIT AS
BEGIN
  DECLARE @Err INT
  BEGIN TRANSACTION
  INSERT INTO Transactions (ParamValue, ThrowError) VALUES (@Param, @Throw)
  SET @Err = @@ERROR
  IF @Err <> 0
    ROLLBACK TRANSACTION
  ELSE
    COMMIT TRANSACTION
  RETURN @Err
END

每個關鍵操作後立即檢查 @@ERROR,非零則回滾,確保原子性。

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