From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Raul Andres Duque <ra_duque(at)yahoo(dot)com(dot)mx> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: [pgsql-es-ayuda] saber si estoy en una transacción |
Date: | 2009-02-04 22:25:15 |
Message-ID: | 3073cc9b0902041425n7ffa9702jfbcff29b13c9965c@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Wed, Feb 4, 2009 at 3:29 PM, Raul Andres Duque <ra_duque(at)yahoo(dot)com(dot)mx> wrote:
> Cordial Saludo.
>
> Cómo puedo saber si estoy dentro de una transacción en la conezión activa?
>
> Algo así como el '@@TRANCOUNT > 0' de mssql.
>
sinceramente la unica solucion que se me ocurre es llamar dos veces a
txid_current() y comparar ambos resultados si son iguales estas en una
transaccion explicita...
algo como:
select txid_current() into txid1;
select txid_current() into txid2;
if txid1 = txid2 then
en transaccion
pros:
- hace lo que quieres
cons:
- si lo haces dentro de una funcion no te vale de nada porque mientras
dura la funcion estas en la misma transaccion
- debes ejecutar en sentencias separadas y almacenar el valor cada vez
porque mientras se ejecuta una sentencia estas en la misma transaccion
sinceramente, la unica utilidad que le veo es si lo ejecutas del lado
del cliente a traves del ODBC, pero si es asi... no deberias saber si
existe una transaccion activa (despues de todo debiste haber ejecutado
un BEGIN) y si ha ocurrido algun error te debe haber enviado el
mensaje de error... claro a menos que uses una de esas facilidades de
algunos lenguajes para hacerse inmantenibles que suprimen los mensajes
de error
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
From | Date | Subject | |
---|---|---|---|
Next Message | Carlos Bazán | 2009-02-05 00:23:18 | Guardar imágenes en base de datos |
Previous Message | Edenar Edenar | 2009-02-04 22:08:39 | Ayuda JAVA+Postgres |