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!! >