隔離等級與交易
SERIALIZABLE 是一種隔離等級,當第一個查詢或更新語句執行時,會對紀錄建立快照;若交易外以任何方式變更了資料,就會發生錯誤。請注意,在執行第一個查詢之前,交易也可以先進行其他工作,例如宣告變數。
你會再次使用 FFIEC 資料集,處理一組資料:其中儲蓄存款年度變動 RCON0352 受到大量偏移所影響。
本練習屬於課程
PostgreSQL 的交易與錯誤處理
練習說明
- 以
SERIALIZABLE模式開始一個交易。 - 將所有
RCON0352大於 100,000 的紀錄更新為減少 50%。 COMMIT交易。- 查詢仍然有
RCON0352大於 100,000 的紀錄數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;