回復到儲存點

PostgreSQL 的交易與錯誤處理

Jason Myers

Principal Engineer

未使用儲存點

BEGIN TRANSACTION;

UPDATE cost = 2.33 WHERE name = 'Linga';

UPDATE cost = 500 WHERE name = 'Macaron';

ROLLBACK;
PostgreSQL 的交易與錯誤處理

使用儲存點與指定回復

BEGIN TRANSACTION;

UPDATE cost = 2.33 WHERE name = 'Linga';

SAVEPOINT oops;
UPDATE cost = 500 WHERE name = 'Macaron';
ROLLBACK TO oops;
PostgreSQL 的交易與錯誤處理

用完後釋放儲存點

BEGIN TRANSACTION;

UPDATE cost = 2.33 WHERE name = 'Linga';
UPDATE cost = 2.33 WHERE name = 'Petit-Beurre';
UPDATE cost = 2.33 WHERE name = 'Rosette';

SAVEPOINT oops;

UPDATE cost = 5.00 WHERE name = 'Macaron';
UPDATE cost = 3.50 WHERE name = 'Panellets';
RELEASE SAVEPOINT oops;
PostgreSQL 的交易與錯誤處理

回復與儲存點的兩個重點

  • 不帶 TO 的 ROLLBACK 會回復整個交易
  • ROLLBACK TO ______ 不是有效的儲存點名稱,會發生錯誤
PostgreSQL 的交易與錯誤處理

一起來練習吧!

PostgreSQL 的交易與錯誤處理

Preparing Video For Download...