Opa, Euler Em 2 de dezembro de 2011 18:10, Euler Taveira de Oliveira <eu...@timbira.com > escreveu:
> 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). > Verdade, analisando com calma concordo com você. Nem sempre fazer as coisas correndo da certo, ainda que você (nosso guru) está sempre atento :) > > > -- > Euler Taveira de Oliveira - Timbira http://www.timbira.com.br/ > PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > Abraços -- JotaComm http://jotacomm.wordpress.com
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral