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

Responder a