TRANSACTION

Una TRANSAZIONE consiste di una o più istruzioni DML e termina con l'esecuzione del comando COMMIT e ROLLBACK.
Se viene eseguita una COMMIT tutte le modifiche diventano permanenti e visibili a tutte le sessioni. Fino a quel momento solo la sessione che aveva eseguito la DML poteva vedere le modifiche. Non è possibile annidare le transazioni perché Oracle non permette di eseguire una transazione mentre è in corso la prima.

Le istruzioni DDL e DCL sono loro stesse transazioni perché il loro codice contiene una DML e una Commit finale.
Quindi se uno stesso utente ha una transazione in corso e successivamente esegue una DDL, la transazione verrà committata.
DDL è l'acronimo di Data Definition Language e comprende le istruzioni Create, Alter, Drop e Rename.
DCL è l'acronimo di Data Control Language e comprende le istruzioni Grant e Revoke.

Se una transazione generata da un comando DML è in corso e si esce dal tool senza eseguire una COMMIT o ROLLBACK, la transazione termina con uno dei due comandi a seconda di come è stato progettato il tool.
Se invece una sessione client fallisce perché killata dal sistema operativo o è caduta la connessione di rete al database o la macchina su cui gira il client va in crash, il database in automatico esegue un Rollback.
Idem se il guasto si ha lato server ad esempio perché il server in cui risiede il database va in crash.

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 applicare le modifiche apportate prima di quel punto. Per ulteriori informazioni vedere il relativo post.

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