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

Responder a