Con esta instrucción “SAVEPOINT”, pondremos un punto de referencia en las transacciones para poder realizar rollbacks parciales, es decir, deshacer cambios hasta donde nos interese.
Aquí va un ejemplo y así se entenderá mejor:
SQL> INSERT INTO PRUEBA (SELECT 'CAMPO'||LEVEL, LEVEL FROM DUAL CONNECT BY LEVEL <= 10); 10 ROWS created. SQL> SAVEPOINT solocinco; SAVEPOINT created. SQL> DELETE FROM PRUEBA WHERE CAMPO2 > 5; 5 ROWS deleted. SQL> SELECT * FROM PRUEBA; CAMPO1 CAMPO2 -------------------- ---------- CAMPO1 1 CAMPO2 2 CAMPO3 3 CAMPO4 4 CAMPO5 5 SQL> ROLLBACK TO SAVEPOINT solocinco; ROLLBACK complete. SQL> SELECT * FROM PRUEBA; CAMPO1 CAMPO2 -------------------- ---------- CAMPO1 1 CAMPO2 2 CAMPO3 3 CAMPO4 4 CAMPO5 5 CAMPO6 6 CAMPO7 7 CAMPO8 8 CAMPO9 9 CAMPO10 10 10 ROWS selected. |