Re: atributo foraneo

From: Jorge Alberto Aquino Andrade <jorge(dot)aquino(dot)andrade(at)gmail(dot)com>
To: Anthony Rafael Sotolongo León <asotolongo(at)uci(dot)cu>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: atributo foraneo
Date: 2014-01-26 18:49:32
Message-ID: CAPM095M5HKw6Lkm-h4hT8iA_0k=rnQyGYxdmFWHcxFxB2ROqzg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Disculpa Anthony, ya vi que que lo que tiene que devolver son las
relaciones foraneas que tiene la tabla que se le define en nombretutaba, yo
esperaba que me diera como resultado tal como lo habia planteado
inicialmente de saber el atributo local que esta relacionado con el
foraneo, en lo que me enviaste solo esta el atributo foraneo, aunque creo
que solo lo combinare con lo que yo tengo y creo que va funcionar, te
cuento luego el resultado, muchas gracias por compartir tu conocimiento.

2014-01-26 Jorge Alberto Aquino Andrade <jorge(dot)aquino(dot)andrade(at)gmail(dot)com>

> Hola Anthony, fijate que al ejecutar el SQL no me devuelve datos
>
>
> 2014-01-25 Anthony Rafael Sotolongo León <asotolongo(at)uci(dot)cu>
>
> 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 19:25:27 Re: atributo foraneo
Previous Message Jorge Alberto Aquino Andrade 2014-01-26 17:40:50 Re: atributo foraneo