Re: Script para saber claves foraneas sobre una tabla

From: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
To: Javier Chávez B(dot) <jchavezb(at)gmail(dot)com>
Cc: Ronald <ronaldriveros(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Script para saber claves foraneas sobre una tabla
Date: 2009-07-09 17:03:44
Message-ID: 925902880907091003h2dcc9472n76fea08efb34fe98@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 9 de julio de 2009 11:23, Javier Chávez B.<jchavezb(at)gmail(dot)com> escribió:
>
>
> 2009/7/9 Ronald <ronaldriveros(at)gmail(dot)com>
>>
>> Necesitas obtener las DDL supongo, desde una aplicacion cliente hecha por
>> ti o tan desde un ide de bd?
>>
>> El 9 de julio de 2009 11:57, Javier Chávez B. <jchavezb(at)gmail(dot)com>
>> escribió:
>>>
>>> Estimados :
>>>
>>> Existe alguna manera de saber mediante un script sobre las tablas de
>>> sistema que tablas hacen referencia a una tabla, o sea saber donde el
>>> identificador de una tabla en particular esta siendo utilizada como llave
>>> foranea por otras...
>>>
>>> Agradezco cualquier orientacion ..
>>>
>>> Slds.
>>> J.
>
> O sea la idea es un select sobre las tablas de sitema donde le pase por
> parametro un tabla / campo  y me retorne que tablas le hacen referencia , me
> entiendes?  no necesito el DDL necesito saber quienes "estan apuntando a.. "
> ya que necesito actualizar unas claves primarias por lo tanto tengo que
> partir  por saber que integridades debo cumplir, me queda el camino largo y
> apestoso de abrir las tablas una por una en PGAdmin y ver las referencias
> pero creo que debe haber una manera mas automatica de hacerlo .. el tema es
> que no he dado con ello aun ...
> Slds.

Alvaro ya dio la solución, veamos si te sirve de todos modos:

SELECT (SELECT relname FROM pg_catalog.pg_class c LEFT JOIN
pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE
c.oid=r.conrelid) as nombre,conname,
pg_catalog.pg_get_constraintdef(oid, true) as condef from
pg_catalog.pg_constraint r WHERE r.conrelid in
( SELECT c.oid FROM pg_catalog.pg_class c LEFT JOIN
pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relname !~
'pg_' and c.relkind = 'r' AND pg_catalog.pg_table_is_visible(c.oid))
AND r.contype = 'f' ;

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-07-09 17:05:12 Re: error con pg_restore
Previous Message Alvaro Herrera 2009-07-09 17:00:15 Re: Script para saber claves foraneas sobre una tabla