Re: Obtener campos FK y PK

From: "Milton Galo Patricio Inostroza Aguilera" <minoztro(at)gmail(dot)com>
To: "Yoel Mc Lennan" <webmaster(at)yoel(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Obtener campos FK y PK
Date: 2007-08-25 06:06:47
Message-ID: 172699c50708242306o5aa9e043h6436729312ae7e7f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 3/08/07, Yoel Mc Lennan <webmaster(at)yoel(dot)com(dot)ar> escribió:
>
>
> Hola grupo, se que había un thread al respecto pero no lo encuentro.

Hola Yoel

>
> Necesito obtener los campos de una tabla dada y el tipo de campo (Int32,
> varchar, etc) además de saber que capos son Pk y que campos son FK con sus
> respectivas relaciones, osea que tabla es la relacionada a ese FK
>
> tengo algo como esto que me devuelve el tipo de campo, pero no si es pk o fk
> y su relacion en caso de ser fk

Después de tiempo de haber leído tu mail, hoy en la noche me decidí
que vería si podía lograr lo que tu pedías {y tomando el consejo de
Álvaro}...salió algo así:

select
pg_class.relname,
pg_constraint.conname,
pg_constraint.conkey,
pg_attribute.attname,
from
pg_constraint,
pg_index,
pg_class,
pg_attribute
where
pg_constraint.conrelid = pg_index.indrelid
and pg_index.indisprimary
and pg_constraint.contype = 'p' --este atributo es para pk, si quieres fk pon f
and pg_class.oid = pg_index.indrelid
and pg_class.oid = pg_constraint.conrelid
and pg_attribute.attrelid = pg_class.oid
and pg_attribute.attnum = ANY (pg_constraint.conkey)

Esto te arroja todas las pk o fk {no olvides cambiar la f}, ahora si
quieres para una relación en especial utiliza lo siguiente:

and pg_class.relname='trabaja'

trabaja es en este caso el nombre de la relación.

>
> SELECT attname, typname From pg_namespace, pg_attribute, pg_type, pg_class
> Where pg_type.oid = atttypid AND pg_class.oid = attrelid AND
> pg_namespace.nspname ='public'
> AND relnamespace = pg_namespace.oid AND relname ='ciudad' AND attnum >= 1;
>
>
> Gracias por el aoporte.

=) esperemos que el sql sea el correcto igual sería bueno si es que se
puede optimizar, los con más experiencia lo hagan y así aprendemos
más, salu2!!

>
> Yoel Mc Lennan
>

--
Milton Inostroza Aguilera

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Milton Galo Patricio Inostroza Aguilera 2007-08-25 06:20:50 Re: Obtener campos FK y PK
Previous Message Espartano 2007-08-25 03:36:45 Re: pg_dump a bd