Re: Tablas Temporales

From: "Javier Aquino H(dot)" <JAquino(at)lexuseditores(dot)com>
To: "sergio gatica m(dot)" <sergio(dot)gatica(at)crecic(dot)cl>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Tablas Temporales
Date: 2006-03-30 14:57:43
Message-ID: 00bf01c6540a$4c8a5c60$0a010a0a@javier
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

No es buena práctica estar creando tablas temporales al momento de la ejecución de funciones, menos aún si siempre se crea la tabla con la misma estructura y es creada y dropeada cada vez que se llama a la función.

Lo que se hace en estos casos es crear la tabla temporal como parte de tu modelo con la siguiente sintaxis:

CREATE TEMPORARY TABLE nombre_de_la_tabla (
.......
......
.....
) ON COMMIT DELETE ROWS ;

De esta forma en la función solo llenas la tabla para lo que creas conveniente y al momento de hacer COMMIT la tabla queda vacía automáticamente. No debes preocuparte por la concurrencia de usuarios, ya que siguiendo la lógica de las transacciones la data no estará disponible para ningún otro usuario que esté conectado, vale decir que cualquier otro usuario que use la tabla siempre la va a encontrar vacía un que otros usuarios estén trabajando en ella.

Saludos y suerte en tu proyecto,

Javier.

----- Original Message -----
From: sergio gatica m.
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Thursday, March 30, 2006 9:22 AM
Subject: [pgsql-es-ayuda] Tablas Temporales

Hola grupo:

La pregunta a lo mejor es básica, pero bueno.

Tengo problemas con na función que ocupa tablas temporales, dentro de la función la creo como:

CREATE TEMPORARY TABLE <tabla> ( ..

e incluso le agrego ON COMMIT DROP, para que se caiga porque la tabla no existe, pero el problema es que al ejecutar la funcion por segnda vez aparece el error:

ERROR: relation with OID 905812 does not exist

Me dado cuenta que se están generando varios schema pg_temp_xxxx en donde van quedando estas tablas y seguramente es un problema de direccionamiento.

¿Puedo saber el oid de la tabla que se crea para saber en que esquema buscar? ¿ como puedo preguntar si la tabla realmente existe?

Leí por ahí que el tema se soluciona con "EXECUTEs" ¿???? Como es eso ¿??

Agradezco de antemano cualquier ayuda, Gracias.

Atentamente

Sergio Gatica M.


In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Obed Soto Déctor 2006-03-30 15:30:32 Re: Como instalar: ISS+Postgres+php en Windows o Apache+PHP+Postgres
Previous Message Javier Aquino H. 2006-03-30 14:45:47 Re: Tablas Temporales