SAVEPOINT

Il comando SAVEPOINT è utilizzato all'interno di una transazione per dividerla in più sezioni.
Interviene per gestire le azioni del comando ROLLBACK. Permette di effettuare il rollback fino ad un certo punto e di applicare le modifiche apportate prima di quel punto.
S i n t a s s i
SAVEPOINT nome_savepoint;

E s e m p i o
Eseguiamo un Update e una Delete della tabella locations.
update locations set postal_code = '00140' where location_id = 1000;
SAVEPOINT a;
delete locations where location_id = 1100;
ROLLBACK TO a;
COMMIT;

La COMMIT verrà eseguita solo sull' Update mentre verrà eseguito il ROLLBACK della Delete.

Se viene inserito un altro Savepoint con lo stesso nome, il primo Savepoint verrà trascurato.

Es e m p i o
update locations set postal_code = '00145' where location_id = 1000;
Insert into locations values (4000, 'via bello','99999','Bologna','Italia','IT');
SAVEPOINT a;
Insert into locations values (4020, 'via brutto','99999','Bologna','Italia','IT');
SAVEPOINT a;
delete locations where location_id = 1100;
ROLLBAK TO a;
COMMIT;

La COMMIT verrà eseguita sull'Update e le due Insert mentre verrà eseguito il ROLLBACK della Delete.

Non può essere eseguita una Commit di un Savepoint.
Il comando Savepoint non rientra nello standard SQL ANSI.

Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione