PostgreSQLのトランザクションとエラー処理へようこそ

PostgreSQL におけるトランザクションとエラー処理

Jason Myers

Principal Engineer

学習目標とデータセット

  • トランザクションでデータの完全性と信頼性を維持
  • 併行性がトランザクションに与える影響
  • トランザクションでのエラー処理
PostgreSQL におけるトランザクションとエラー処理

トランザクションを使う動機

patient_intake

name priority
Oscar Parker 1
Prisha Ahmed 2
Rhea Taylor 3
UPDATE patient_intake SET priority=1 
WHERE name='Prisha Ahmed';

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';
PostgreSQL におけるトランザクションとエラー処理

エラー後のテーブル結果

patient_intake

name priority
Oscar Parker 1
Prisha Ahmed 1
Rhea Taylor 3
PostgreSQL におけるトランザクションとエラー処理

トランザクションの使用

BEGIN;

UPDATE patient_intake SET priority=1 
WHERE name='Prisha Ahmed';

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';

COMMIT;
PostgreSQL におけるトランザクションとエラー処理

トランザクションを使う別の理由

  • 成否をまとめて制御したい複数文
  • 併行処理が文に与える影響の対処
PostgreSQL におけるトランザクションとエラー処理

トランザクションブロック

BEGIN TRANSACTION;

UPDATE patient_intake SET priority=1 
WHERE name='Prisha Ahmed';

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';

COMMIT;
PostgreSQL におけるトランザクションとエラー処理

文は何本でも可

BEGIN;

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';

UPDATE patient_intake SET priority=1 
WHERE name='Rhea Taylor';

UPDATE patient_intake SET priority=3 
WHERE name='Prisha Ahmed';

COMMIT;
PostgreSQL におけるトランザクションとエラー処理

練習しましょう!

PostgreSQL におけるトランザクションとエラー処理

Preparing Video For Download...