分離レベルを使う
動画で見たように、個々のトランザクションごとに分離レベルを選べることが重要な場合があります。これを行う最適な方法は、BEGIN TRANSACTION の別名であり、何かが異なることを明確にできる START TRANSACTION を使うことです。トランザクション開始時に ISOLATION LEVEL を指定できます。
ここでは REPEATABLE READ を使います。これはダーティリード、再読不能読取り、ファントムリードから保護してくれます。FFEIC のデータでは、RCON2210 は要求払預金(demand deposits)を表し、未決済の当座預金、銀行発行の小切手、未記帳の入金を追跡します。理由のいかんにかかわらず資金流出が起きた場合、銀行にとって負債となり得ます。要求払預金が 100,000,000ドルを超える銀行をすべて見つけましょう。
この演習はコースの一部です
PostgreSQL におけるトランザクションとエラー処理
演習の手順
- repeatable read でトランザクションを開始します。
- 要求払預金で
RCON2210が 100,000,000ドルを超えるすべてのレコードを選択します。 - その後も
RCON2210が引き続き 100,000,000ドルを超えるすべてのレコードを選択します。 - トランザクションをコミットします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- 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
___;