 |
|
 |
Transacciones autónomas
En ocasiones es necesario que los datos escritos por parte de una transacción sean persistentes a pesar de que la transaccion se deshaga con ROLLBACK.
PL/SQL permite marcar un bloque con PRAGMA AUTONOMOUS_TRANSACTION. Con esta directiva marcamos el subprograma para que se comporte como transacción diferente a la del proceso principal, llevando el control de COMMIT o ROLLBACK independiente.
Observese el siguiente ejemplo. Primero creamos un procedimiento y lo marcamos con PRAGMA AUTONOMOUS_TRANSACTION.
CREATE OR REPLACE PROCEDURE Grabar_Log(descripcion VARCHAR2) IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO LOG_APLICACION (CO_ERROR, DESCRIPICION, FX_ERROR) VALUES (SQ_ERROR.NEXTVAL, descripcion, SYSDATE);
COMMIT; -- Este commit solo afecta a la transaccion autonoma END ;
|
A continuación utilizamos el procedimiento desde un bloque de PL/SQL:
DECLARE producto PRECIOS%TYPE; BEGIN producto := '100599'; INSERT INTO PRECIOS (CO_PRODUCTO, PRECIO, FX_ALTA) VALUES (producto, 150, SYSDATE); COMMIT; EXCEPTION WHEN OTHERS THEN Grabar_Log(SQLERRM); ROLLBACK; /* Los datos grabados por "Grabar_Log" se escriben en la base de datos a pesar del ROLLBACK, ya que el procedimiento está marcado como transacción autonoma. */ END;
|
Es muy común que, por ejemplo, en caso de que se produzca algún tipo de error queramos insertar un registro en una tabla de log con el error que se ha produccido y hacer ROLLBACK de la transacción. Pero si hacemos ROLLBACK de la transacción tambien lo hacemos de la insertción del log.
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
Transacciones autónomas |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
21804 |
Fecha de publicación:
24/07/2006 |
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.
Posee mas de diez años de experiencia trabajando para las principales empresas de España.
Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.
Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).
Es fundador, diseñador y programador de www.devjoker.com. |
|
|
Visitas:
36
|
Comentarios:
0
|
Archivo:
Articulos
|
|
Visitas:
108
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
155
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
33
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
285
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
839
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
712
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
447
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
1052
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
250
|
Comentarios:
0
|
Archivo:
Articulos
|
|
|
|
 |
| Encuesta |
|
¿A que perfil te adaptas mejor? |
|
|
|
|
|
|
|
|
 |