From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Silvio Quadri <silvioq(at)gmail(dot)com> |
Cc: | Lista - PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>, Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx> |
Subject: | Re: [pgsql-es-ayuda] Ejecutar sentencias fuera de transaccion en una función |
Date: | 2009-11-05 14:13:16 |
Message-ID: | 20091105141316.GG3694@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
> El día 5 de noviembre de 2009 08:37, Raúl Andrés Duque Murillo
> <ra_duque(at)yahoo(dot)com(dot)mx> escribió:
> > Cordial Saludo.
> >
> > Tengo una función que incluye bastantes pasos y quisiera hacer un monitoreo
> > de cada acción grabando filas a una tabla de log. Cuando la función se
> > ejecuta sin errores todo perfecto pero si hay errores las entradas a la
> > tabla de log se pierden (porque están dentro de una transacción) ...
> > pensaría que no se puede pero podría ejecutar sentencias sin transacción
> > dentro de una función? Cómo podría implementarlo?
Puedes usar dblink para conectarte a la misma base de datos dentro de la
función y hacer la inserción. Obviamente es mucho más limpio si tienes
otra función que reciba la cadena, abra la conexión dblink, y la
inserte.
Como es una conexión aparte, es una transacción aparte, y así no
desaparece cuando tu transacción aborta.
Esto se conoce como "transacción autónoma" en otros ámbitos (Oracle?) y
no está implementado en Postgres.
--
Alvaro Herrera Vendo parcela en Valdivia:
http://www.portalinmobiliario.com/propiedades/fichas.asp?PropID=749682
"Uno combate cuando es necesario... ¡no cuando está de humor!
El humor es para el ganado, o para hacer el amor, o para tocar el
baliset. No para combatir." (Gurney Halleck)
From | Date | Subject | |
---|---|---|---|
Next Message | gilberto.castillo | 2009-11-05 14:31:41 | PGDay Cuba 2010 |
Previous Message | Raúl Andrés Duque Murillo | 2009-11-05 13:40:52 | Re: [pgsql-es-ayuda] [pgsql-es-ayuda] Ejecutar sentencias fuera de transaccion en una función |