Кілька точок збереження та ROLLBACK

Транзакції та обробка помилок у 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

Дублювання назв точок збереження

  • Новий SAVEPOINT з тією самою назвою в межах однієї транзакції «затьмарює» попередній, а не перезаписує чи звільняє його.
  • Загалом уникайте повторного використання назв у межах транзакції.
Транзакції та обробка помилок у 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...