On Wed, Feb 4, 2009 at 3:29 PM, Raul Andres Duque <ra_du...@yahoo.com.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 -- TIP 6: ¿Has buscado en los archivos de nuestra lista de correo? http://archives.postgresql.org/pgsql-es-ayuda