Re: Tablas Temporales

From: "Javier Aquino H(dot)" <JAquino(at)LexusEditores(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Tablas Temporales
Date: 2006-03-31 20:15:08
Message-ID: 014601c654ff$cf13c1d0$0a010a0a@javier
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>
> ----- Original Message -----
> From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
>
>> On 3/30/06, Javier Aquino H. <JAquino(at)lexuseditores(dot)com> wrote:
>>>
>>> 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.
>>>
>>>
>>
>> pero la tabla desaparecera al termino de la sesion, cual es la
>> diferencia con crearla en la funcion? bueno, solo que llames a la
>> funcion varias veces durante la misma sesion, caso contrario es lo
>> mismo...
>>
>> respecto a lo de EXECUTE
>>
>> EXECUTE 'create temp table tabla_temporal ( ...campos... )';
>>
>> --
>> Atentamente,
>> Jaime Casanova
>>

Efectivamente .... la tabla se elimina al final de la sesión, lo cual quiere
decir que puede usar la tabla temporal N veces o mejor dicho en N
transacciones y cada vez que se logre un COMMIT se limpia la tabla. Con esto
se gana eficiencia y rapidéz, ya que no se crea y elimina la tabla en cada
transacción sino en cada sesión dentro del cual pueden haber n
transacciones. Además que evitamos el problema inicial ... "ERROR: relation
with OID 905812 does not "

Slds.

Javier.

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message deepthroat 2006-03-31 20:18:21 restaurar vista
Previous Message Juan Carlos Badillo Goy 2006-03-31 20:03:42 Necesito ayuda con la ejecución de ficheros desde postgres