Re: Funcion que retorne nombre de llave primaria

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion que retorne nombre de llave primaria
Date: 2005-05-14 20:08:23
Message-ID: 20050514200823.GA7568@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Sat, May 14, 2005 at 01:10:51PM -0500, Juan Pablo Espino wrote:
> Hola a todos,
>
> Es posible conocer si una tabla tiene llave primaria y cual es el
> atributo que actua como llave primaria, a partir del nombre de la
> tabla?, por ejemplo algo asi
>
> select dame_la_llave_primaria('tabla');
>
> y que retorne por ejemplo 'id', donde 'id' seria la llave primaria de
> la tabla 'tabla'.

Hola, eso no es posible en general porque las llaves primarias pueden
ser mas de una columna. Por lo tanto es necesario que tu funcion sea
capaz de retornas varios nombres de columna.

Ahora, para hacer tu funcion, necesitas examinar la tabla pg_index,
buscando indisprimary, indkey donde indrelid sea la tabla que buscas.
Luego unes con pg_attribute.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end." (2nd Commandment for C programmers)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jairo Martín Miguel 2005-05-14 21:58:22 interacción entre postgresql y aspx
Previous Message Henry Interiano 2005-05-14 18:27:25 Importar Datos con e Comando COPY