Più savepoint e rollback

Transazioni e gestione degli errori in PostgreSQL

Jason Myers

Principal Engineer

Più 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';
Transazioni e gestione degli errori in PostgreSQL

Nomi di savepoint duplicati

  • Un nuovo SAVEPOINT con lo stesso nome in una transazione oscura il precedente: non lo sovrascrive né lo rilascia.
  • In generale, evita di riutilizzare nomi nella stessa transazione.
Transazioni e gestione degli errori in PostgreSQL

Esempio: nome di savepoint duplicato

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';
Transazioni e gestione degli errori in PostgreSQL

Passiamo alla pratica!

Transazioni e gestione degli errori in PostgreSQL

Preparing Video For Download...