From: | "Julio Cesar Rodriguez Dominguez" <jurasec(at)gmail(dot)com> |
---|---|
To: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
Cc: | "Lista Postgres" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Esquema temporal en uso |
Date: | 2008-05-08 15:39:13 |
Message-ID: | 925902880805080839p4a0fdcfy8b8954c6066a83a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Thu, May 8, 2008 at 5:11 PM, Oswaldo Hernández <listas(at)soft-com(dot)es> wrote:
> Julio Cesar Rodriguez Dominguez escribió:
>>
>> On Thu, May 8, 2008 at 10:25 AM, Oswaldo Hernández <listas(at)soft-com(dot)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.
Intenta con esta consulta:
SELECT n.nspname as "Schema", c.relname as "Name", r.rolname as
"Owner" FROM pg_catalog.pg_class c JOIN pg_catalog.pg_roles r ON
r.oid = c.relowner LEFT JOIN pg_catalog.pg_namespace n ON n.oid =
c.relnamespace WHERE c.relkind IN ('r','v','S','') AND n.nspname <>
'pg_catalog' AND n.nspname !~ '^pg_toast' AND
pg_catalog.pg_table_is_visible(c.oid) and c.relname like
'nombre_tabla_temporal%' ORDER BY 1,2;
>
> 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.
>
--
:: Jc3 ::
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel | 2008-05-08 15:39:14 | Re: Replicación de Tabla de Oracle a PostgreSQL |
Previous Message | Giorgio Cristal | 2008-05-08 15:37:21 | Power Designer y PosgreSQL |