[firebase-br] Otendo informações sobre FOREIGN KEY

Jeferson Oliveira jefersonfoliveira em gmail.com
Sáb Fev 23 23:40:39 -03 2008


2008/2/22, Daniel / Tecnobyte:
> Boa noite

Boa noite Daniel!


>  Um amigo me perguntou como poderia obter algumas informações sobre
> as FOREIGN KEY's existente no banco de dados. Acreditando que isto
> possa ser útil para mais alguém, resolvi postar aqui na lista.

Legal você ter compartilhado essa dica.
Se me permite uma sugestão, a sua sentença retornará o resultado
esperado quando o índice utilizado por cada FK possuir o mesmo nome da
FK, que é o caso geral, mas não retornará as FKs que utilizem índices
de nomes distintos.
Exemplo: FK_PESSOA_UF utiliza o índice RDB$FOREIGN117

alter table PESSOA
add constraint FK_PESSOA_UF
foreign key (UF)
references UF(CODIGO)
using index RDB$FOREIGN117

Para que a sentença retorne todas as FKs da tabela especificada,
independente de haver correlação entre os nomes dos índices e das FKs,
basta:

1) Substituir:
>  JOIN RDB$INDICES AS FK_IDX ON FK_IDX.RDB$INDEX_NAME = FK.RDB$INDEX_NAME

por:

join RDB$REF_CONSTRAINTS FK_IDX on (FK_IDX.RDB$CONSTRAINT_NAME =
FK.RDB$CONSTRAINT_NAME)


2) Trocar:
>  JOIN RDB$RELATION_CONSTRAINTS AS PK ON PK.RDB$CONSTRAINT_NAME = FK_IDX.RDB$FOREIGN_KEY

por:

join RDB$RELATION_CONSTRAINTS PK on PK.RDB$CONSTRAINT_NAME =
FK_IDX.RDB$CONST_NAME_UQ


Espeo ter ajudado.


Abraço!
Jeferson Oliveira




Mais detalhes sobre a lista de discussão lista