Více savepointů a rollback

Transakce a ošetření chyb v PostgreSQL

Jason Myers

Principal Engineer

Více savepointů

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';
Transakce a ošetření chyb v PostgreSQL

Duplicitní názvy savepointů

  • Nový SAVEPOINT se stejným názvem jako předchozí v téže transakci ho zastiňuje – nepřepisuje ani neuvolňuje!
  • Obecně se doporučuje vyhýbat se opakovanému použití názvů v rámci transakce.
Transakce a ošetření chyb v PostgreSQL

Příklad duplicitního názvu savepointu

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';
Transakce a ošetření chyb v PostgreSQL

Pojďme si procvičit!

Transakce a ošetření chyb v PostgreSQL

Preparing Video For Download...