Wiele punktów zapisu i wycofywanie

Transakcje i obsługa błędów w PostgreSQL

Jason Myers

Principal Engineer

Wiele punktów zapisu

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';
Transakcje i obsługa błędów w PostgreSQL

Duplikowanie nazw punktów zapisu

  • Nowy SAVEPOINT o takiej samej nazwie jak wcześniejszy w tej samej transakcji przesłania go, zamiast nadpisywać lub zwalniać!
  • Należy unikać ponownego używania tych samych nazw w obrębie transakcji.
Transakcje i obsługa błędów w PostgreSQL

Przykład zduplikowanej nazwy punktu zapisu

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';
Transakcje i obsługa błędów w PostgreSQL

Czas na ćwiczenia!

Transakcje i obsługa błędów w PostgreSQL

Preparing Video For Download...