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