Re: atributo foraneo

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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