Thursday, May 8, 2008

Re: [pgsql-es-ayuda] Esquema temporal en uso

Julio Cesar Rodriguez Dominguez escribió:
> On Thu, May 8, 2008 at 10:25 AM, Oswaldo Hernández <listas@soft-com.es> wrote:
>> Hola,
>>
>> Tengo una funcion que necesita comprobar si se han creado previamente unas
>> tablas temporales para regenerarlas si es necesario.
>>
>> Para verificar si existe una tabla suelo hacer una lectura en pg_class
>> buscando tabla y esquema, pero en el caso de las tablas temporales no se que
>> esquema esta utilizando la sesion actual.
>>
>> ¿Como puedo averiguar cual es el esquema temporal que esta utilizando la
>> sesion?
> A ver si entendi bien, quieres saber en que tabla del sistema se esta
> guardando el nombre de tu tabla temporal, para poder consultar si
> existe o no, y de ahí decidir si debes crearla?
> Si fuera eso, puedes consultar pg_statio_user_tables.

una funcion crea una tabla temporal:
create temp table tabla_temporal (.......)

Al ser una tabla temporal postgres la crea en un schema llamado pg_temp_X, donde X es un numero que
le asigna postgres.

En otro momento, y siempre dentro de la misma sesion, otra funcion necesita verificar la existencia
de esta tabla. El nombre de la tabla lo sabe, pero lo que no sabe es el nombre que le ha asignado
postgres al esquema temporal.

pg_statio_user_tables no me vale porque si esta accion se realiza desde mas de una sesion me muestra
todas las tablas temporales activas de *todas* las sesiones, y no puedo averiguar cual es la que
corresponde a la sesion actual.

Puedo intentar crear de nuevo la tabla y capturar el error si ya existiera, pero me gustaria poder
hacerlo consultando los catálogos.

Espero haberme explicado un poco mejor.

Saludos,

--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
--
TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda

No comments: