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.
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 |