 |
|
 |
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.
|
| |
 |
menudo crack
por
yo
Respuesta recibida el [24/07/2007 03:04:10]
|
 |
solo queria agradecerte este magnífico tutorial. Está muy bien explicado, claro y se puede aprender PL/SQL desde cero. Muchas gracias, me ha servido de mucha ayuda. Sigue asi
|
| |
 |
Simplemente excelente
por
SG
Respuesta recibida el [18/11/2007 03:35:21]
|
 |
Estoy comenzando con todo lo que es SQL y PL/SQL, y la verdad que esta página me ha servido de base para apoyar las clases de laboratorio de mi universidad.
Sigan así!
|
| |
 |
Excelente
por
FimHein
Respuesta recibida el [03/03/2008 01:22:29]
|
 |
Muy buen tutorial, con esta pagina he aprendido a utilizar PL/SQL, lo que me ha servido de mucho en mi trabajo y mis estudio... se agradece mucho..
|
| |
 |
Gran tutorial
por
EJVT
Respuesta recibida el [20/06/2008 03:52:45]
|
 |
Mis felicitaciones. Excelente tutorial, práctico y claro
|
| |
 |
Entiendo que sería la misma tr...
por
Miguel
Respuesta recibida el [30/04/2009 05:38:23]
|
 |
Entiendo que sería la misma transacción? Es decir, hasta que no acabe la parent transaction y la autonomus transaction no tendré respuesta.
En el caso que se hiciera en una web, hasta que no se insertara algo en el log y se hiciera el rollback en el ejemplo que has puesto, no recargaría la pagina al no tener respuesta de oracle.
Sería eso?
|
| |
 |
Excelente explicacion
por
drlang
Respuesta recibida el [03/08/2009 08:06:02]
|
 |
Hola que tal. Me gusta muchisimo consultar este manual porque esta explicado de manera muy simple. Sigue asi.
|
| |
 |
Duda
por
Enrique Prades
Respuesta recibida el [06/02/2010 11:00:35]
|
 |
Entonces,al dar error en ved de meter esos datos en la tabla, meteria los datos del error definidos en la transaccion autonoma?
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
Transacciones autónomas |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
33174 |
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:
111
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
811
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
767
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
674
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
3183
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
14571
|
Comentarios:
7
|
Archivo:
Articulos
|
Visitas:
1499
|
Comentarios:
3
|
Archivo:
Articulos
|
|
Visitas:
697
|
Comentarios:
2
|
Archivo:
Articulos
|
|
Visitas:
369
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2034
|
Comentarios:
2
|
Archivo:
Articulos
|
|
|
 |
|
 |