回滚到保存点

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 中的事务与错误处理

Passons à la pratique !

PostgreSQL 中的事务与错误处理

Preparing Video For Download...