Несколько точек сохранения и откат

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

Jason Myers

Principal Engineer

Несколько точек сохранения

BEGIN TRANSACTION;

UPDATE inventory SET quantity = quantity - 1 WHERE name in ('flour', 'sugar');

SAVEPOINT inventory_step;

INSERT baking_list SET quantity=12 WHERE name='Torun';

SAVEPOINT queuing_step;

UPDATE cookies SET quantity = 12 WHERE name = 'Torun';
Транзакции и обработка ошибок в PostgreSQL

Дублирование имён точек сохранения

  • Новая точка сохранения с тем же именем, что и предыдущая в рамках той же транзакции, перекрывает её, но не заменяет и не освобождает!
  • Старайтесь не использовать одинаковые имена в пределах одной транзакции.
Транзакции и обработка ошибок в PostgreSQL

Пример с дублирующимся именем точки сохранения

BEGIN TRANSACTION;

UPDATE inventory SET quantity = quantity - 1 WHERE name in ('flour', 'sugar');

SAVEPOINT oops;

INSERT baking_list SET quantity=12 WHERE name='Torun';

SAVEPOINT oops;

UPDATE cookies SET quantity = 12 WHERE name = 'Torun';
Транзакции и обработка ошибок в PostgreSQL

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

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

Preparing Video For Download...