交易 = 作為單一工作單位的一系列陳述式。要么全成功,要么全不發生。操作先在緩衝區發生,CHECKPOINT 才寫入磁碟。COMMIT 前不持久化。長交易佔用更多資源、鎖定更久,需謹慎設計。
輸入 PIN → 選帳戶 → 輸入金額。若扣款成功但出鈔失敗,交易機制可回滾確保一致性。
PRINT 1/0 觸發除零錯誤,@@ERROR 回傳 8134CREATE 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,非零則回滾,確保原子性。