Re: [pgsql-es-ayuda] Ejecutar sentencias fuera de transaccion en una función

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)

In response to

Responses

Browse pgsql-es-ayuda by date

  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