歡迎來到 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...