使用隔離等級
就像影片中示範的,有時你需要為單一交易選擇隔離等級。最清楚的作法是使用 START TRANSACTION(BEGIN TRANSACTION 的別名)來開啟交易,並在開始時指定 ISOLATION LEVEL,以強調這次操作與眾不同。
這裡我們要使用 REPEATABLE READ,可避免 dirty read、nonrepeatable read 和 phantom read。在 FFEIC 資料中,RCON2210 代表活期存款欄位,追蹤所有未清的支票帳戶、銀行簽發的支票,以及尚未入帳的貸記。如果因任何原因出現擠兌,這些可能成為銀行的負債。我們來找出所有活期存款超過 $100,000,000 的銀行。
本練習屬於課程
PostgreSQL 的交易與錯誤處理
練習說明
- 以 repeatable read 開始一個交易。
- 查詢所有活期存款中
RCON2210超過 $100,000,000 的紀錄。 - 再次查詢
RCON2210仍超過 $100,000,000 的所有紀錄。 - 提交(commit)交易。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- Create a new transaction with an isolation level of repeatable read
___ TRANSACTION ___ LEVEL ___ ___;
-- Count of records over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Count of records still over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Commit the transaction
___;