[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