始める無料で始める

分離レベルとトランザクション

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;
コードを編集して実行