From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | will <wrbutros(at)rizoma(dot)cl> |
Cc: | Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [pgsql-es-ayuda] Identificador único en Jerarquía |
Date: | 2012-03-21 21:58:24 |
Message-ID: | CAJKUy5iRw14SJRqW3huetpLvQ8mvHgsE_YmosjCBVn4Nw-qAOg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2012/3/21 will <wrbutros(at)rizoma(dot)cl>:
>
> Pregunta:
> ---------------------------------
>
> Cómo puedo hacer que esta consulta
>
> WITH RECURSIVE compuesta (Madre, Hijo, id) AS
> (
> SELECT madre, hijo,
> ARRAY[0, --id_único] AS id_madre
> FROM componente_mc WHERE madre = A
> UNION ALL
> SELECT componente_mc.madre, componente_mc.hijo,
> ARRAY[id_madre[2], --id_único],
> FROM componente_mc, compuesta
> WHERE componente_mc.madre = compuesta.hijo
> )
> SELECT Hijo, Madre
> FROM compuesta
>
> pueda generar un id único como identificador (donde dice --id_único), y que
> no se repita en ningún padre?,
>
esconde la consulta en una función. al inicio de la función crea una
secuencia temporal (CREATE TEMP SEQUENCE), donde dice --id_unico pon
nextval('secuencia_temporal'), al terminar la funcion borra la
secuencia.
la razon para crear una ssecuencia temporal es que la funcion pueda
ejecutarse concurrentemente en diversas sesiones y el esconderlo en
una funcion es para esconder la implementacion de que estas usando una
secuencia.
/me corre a esconderse del monton de piedras que la gente se alista a lanzarle
--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
From | Date | Subject | |
---|---|---|---|
Next Message | Erick Urias | 2012-03-22 00:49:25 | Re: Fwd: Caida de postgres 8.4 |
Previous Message | will | 2012-03-21 19:34:02 | Identificador único en Jerarquía |