Con el debido respeto a todos... esto deberia resumirse en un comando
interno del PostgreSQL.

Esta necesidad es real y con frecuencia, en informix por ejemplo es sacar
un esquema de la base de datos que se resume en

dbschema -d nombrebase -t nombretabla > archivosalida


o

dbschema -d nombrebase  > archivosalida

y sale un script sql con create table con sus columnas sus llaves primarias
...foraneas ... constraints ...restricciones a nivel de columna ...etc. es
un full script para crear todas las tablas de la base de datos vacia.

Saludos cordiales
f.l.


2015-05-13 13:17 GMT-04:00 MARIA ANTONIETA RAMIREZ SOLIS <
marami...@ulsaneza.edu.mx>:

>
> Buen dia
>
> Les comparto una consulta que me dio lo que necesitaba , que era saber las
> llaves foraneas y primarias de todas las tablas en un solo query.
>
>
> SELECT tc.table_name,
> tc.constraint_name,
> tc.constraint_type,
> kcu.column_name,
> tc.is_deferrable,
> tc.initially_deferred,
> rc.match_option AS match_type,
> rc.update_rule AS on_update,
> rc.delete_rule AS on_delete,
> ccu.table_name AS references_table,
> ccu.column_name AS references_field
> FROM information_schema.table_constraints tc
> LEFT JOIN information_schema.key_column_usage kcu
> ON tc.constraint_catalog = kcu.constraint_catalog
> AND tc.constraint_schema = kcu.constraint_schema
> AND tc.constraint_name = kcu.constraint_name
> LEFT JOIN information_schema.referential_constraints rc
> ON tc.constraint_catalog = rc.constraint_catalog
> AND tc.constraint_schema = rc.constraint_schema
> AND tc.constraint_name = rc.constraint_name
> LEFT JOIN information_schema.constraint_column_usage ccu
> ON rc.unique_constraint_catalog = ccu.constraint_catalog
> AND rc.unique_constraint_schema = ccu.constraint_schema
> AND rc.unique_constraint_name = ccu.constraint_name
> WHERE lower(tc.constraint_type) in ('foreign key', 'primary key')
> ORDER BY tc.table_name
>
>
> Saludos!!
>

Responder a