From: | Anthony Rafael Sotolongo León <asotolongo(at)uci(dot)cu> |
---|---|
To: | Jorge Alberto Aquino Andrade <jorge(dot)aquino(dot)andrade(at)gmail(dot)com> |
Cc: | Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: atributo foraneo |
Date: | 2014-01-25 21:43:29 |
Message-ID: | 52E43001.1000507@uci.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Jorge espero que esto te sirva, solo debes sustituir al final de la
consulta 'nombretutaba' por nombre de tu tabla:
SELECT pg_constraint.conname as nombrellave , pg_class.relname AS tabla,
substring ( pg_get_constraintdef(pg_constraint.oid) from (position
((select a.relname from pg_class a where a.oid=pg_constraint.confrelid)
in pg_get_constraintdef(pg_constraint.oid))) for position(' ON ' in
pg_get_constraintdef(pg_constraint.oid))-position ((select a.relname
from pg_class a where a.oid=pg_constraint.confrelid) in
pg_get_constraintdef(pg_constraint.oid)) ) as atributoforaneo,
(select nspname||'.'||relname from pg_class, pg_namespace where
relnamespace=pg_namespace.oid and pg_class.oid = pg_constraint.confrelid
and relkind='r' ) as esquemaytablaforanea
,
case confmatchtype
when 'u' then 'MATCH simple '
when 'f' then 'MATCH full'
when 'p' then 'MATCH partial'
end as tipo,
case confupdtype
when 'a' then 'no action '
when 'r' then 'restrict'
when 'c' then 'cascade'
when 'n' then 'set null'
else
'default'
end as onupdate ,
case confdeltype
when 'a' then 'no action '
when 'r' then 'restrict'
when 'c' then 'cascade'
when 'n' then 'set null'
else
'default'
end as ondelete
FROM pg_constraint, pg_class
WHERE ( (pg_constraint.contype = 'f'::"char") AND
(pg_constraint.conrelid =
pg_class.oid) and relname='nombretutaba')
saludos
El 1/25/2014 11:29 AM, Jorge Alberto Aquino Andrade escribió:
> Lista por favor ayudenme, necesito saber donde obtengo en la base cual
> es el campo de una llave foranea es decir si tengo esto
>
> CONSTRAINT nombre_constraint FOREIGN KEY (atributo1)
> REFERENCES esquema.tabla2 (atributo2) MATCH SIMPLE
> ON UPDATE RESTRICT ON DELETE RESTRICT
>
> como saber que el atributo1 esta reealacionado con el atributo2
> obteniendo nombre de esquemas y tablas respectivos.
>
> Nota:
> Hasta el momento he logrado recurperar todos los atributos de las
> tablas foraneas que estan ligadas con la tabla primaria pero yo solo
> deseo el atributo de la tabla foranea que esta ligado con la tabla
> primaria.
________________________________________________________________________________________________
III Escuela Internacional de Invierno en la UCI del 17 al 28 de febrero del 2014. Ver www.uci.cu
From | Date | Subject | |
---|---|---|---|
Next Message | Jorge Alberto Aquino Andrade | 2014-01-26 17:40:50 | Re: atributo foraneo |
Previous Message | Jorge Alberto Aquino Andrade | 2014-01-25 17:29:56 | atributo foraneo |