Oracle - Control de transacciones
Written by lopezatienza on 23 Diciembre 2008 – 16:38 -CONTROL DE TRANSACCIONES
DEFINICION: Conjunto de operaciones dependientes unas de otras que se realizan en la BD. Para que la transacción se ejecute, han de realizarse todas y cada una de las partes u operaciones que la componen; En el caso de que alguna falle se dará por fallida toda la transacción.
El usuario puede definir el comienzo y el fin de una transacción.
EN ORACLE:
.- Comienza la transacción con la 1º orden SQL de la sesión de usuario o con la 1º orden posterior a la finalización de la transacción anterior.
.- Finaliza cuando se ejecuta un comando de control de transacción (commit o rollback) , una orden de definición de datos (DDL) o cuando finaliza la sesión.
Una vez concluida la transacción esta no se puede deshacer.
COMANDOS DE CONTROL DE TRANSACION
.-COMMIT: Da por concluida la transacción haciendo definitivos los cambios efectuados, liberando las filas bloqueadas. Solo después de que se ejecute un commit los demás usuarios tendrán acceso a los datos modificados.
.- ROLLBACK: Da por concluida la transacción deshaciendo los cambios efectuados y liberando las filas bloqueadas.
.-ROLLBACK IMPLICITOS: Cuando un programa falla y no se controla la excepción que produjo el fallo. Se deshacen todas las operaciones excepto aquellas que dentro del programa hayan sido confirmadas.
.-SAVEPOINT <PUNTO DE SALVAGUARDA>: Se usa con “rollback to” para marcar puntos de salvaguarda a la hora de procesar transacciones. Esto permitirá deshacer parte de una transacción.
.-ROLLBACK TO <PUNTO DE SALVAGUARDA>: Deshace el trabajo realizado sobre la BD después del punto de salvaguarda. No obstante tampoco confirma el trabajo hecho hasta el punto de salvaguarda. La transacción en realidad no se confirma o rechaza hasta que aparece un commit o un rollback.
I1
I2
SAVEPOINT P1
I3
I4
SAVEPOINT P2
I5
I6
ROLLBACK TO P1
COMMIT/ROLLBACK
Los ámbitos de p1, p2 dependen del a transacción.
· TRANSACCIÓN AUTONOMA
Son las que se pueden confirmar o rechazar con independencia de lo que ocurre en la transacción en curso. Y viceversa, lo que ocurra con la transacción en curso no afecta a la autónoma.
Se usan en pequeños programas o bloques.
Se declaran en la sesión declarativa como:
PRAGMA AUTONOMOUS_TRANSACTION; (se crea la transacción autónoma)
…………………………….
Commit / rollback;
UPDATE
UPDATE
F(X)à pragma autonomous_transaction i1 i2 i3 i4 commit;
Rollback
UPDATE
UPDATE
· TRANSACIONES DE SOLO LECTURA
Se usan para garantizar la consistencia de los datos recuperados entre distintas consultas frente a posibles cambios que puedan ocurrir entre ellas.
El comienzo de una transacción de solo lectura se establece con SET TRANSACTION READ ONLY. Todas las consultas que se ejecuten después solamente verán aquellos cambios confirmados antes del comienzo de la transacción. (Como si hiciéramos una fotografía de la BD). Se confirma o rechaza con commit o rollback.
Antes del una transacción read only hay que hacer un rollback o commit o algo que finalice la transacción actual.
Tags: Oracle
Posted in Oracle |
