On 02-12-2011 15:46, JotaComm wrote: > SELECT pg_class.relname AS "Nome da tabela", > > pg_attribute.attname AS "Nome do atributo", > > pg_constraint.conname AS "Nome da restrição - Chave estrangeira", > > pg_indexes.indexname AS "Nome do índice", > > pg_indexes.indexdef AS "Definição do índice" > > FROM pg_class JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid > > JOIN pg_attribute ON pg_class.oid=pg_attribute.attrelid > > JOIN pg_constraint ON pg_attribute.attnum=ANY(pg_constraint.confkey) AND > pg_class.oid=pg_constraint.conrelid > > LEFT OUTER JOIN pg_indexes ON pg_class.relname=pg_indexes.tablename > > WHERE pg_namespace.nspname='public'; > > Essa consulta traz a coluna da chave estrangeira incorreta. confkey é relativo as colunas da tabela referenciada pela chave estrangeira. O correto seria algo com:
attnum = ANY(conkey) AND contype = 'f' Além disso, o último LEFT JOIN falha ao obter o nome do índice da coluna em questão; ele está pegando qualquer índice da tabela. O correto seria fazer uma correspondência com attnum (pg_attribute) e indkey (pg_index). -- Euler Taveira de Oliveira - Timbira http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
