Откат к точке сохранения

Транзакции и обработка ошибок в 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

Два важных правила об откатах и точках сохранения

  • ROLLBACK без TO откатывает всю транзакцию целиком
  • ROLLBACK TO ___, где ___ — недопустимое имя точки сохранения, вызовет ошибку
Транзакции и обработка ошибок в PostgreSQL

Давайте потренируемся!

Транзакции и обработка ошибок в PostgreSQL

Preparing Video For Download...