El 9 de julio de 2009 11:23, Javier Chávez B.<jchav...@gmail.com> escribió:
>
>
> 2009/7/9 Ronald <ronaldrive...@gmail.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. <jchav...@gmail.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' ;
--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a