[firebase-br] Como Buscar os campos relacionados das FKs?
Douglas Tosi
douglasht em gmail.com
Seg Dez 1 10:57:24 -03 2008
2008/12/1 João Dias de Carvalho Neto <jdias.bjsoftware em gmail.com>:
> estou precisando da ajudinha de vocês para retornar algumas infos das
> tabelas de sistema
>
> é o seguinte, preciso retornar todas as informações das FK´s de uma tabela
>
> consegui alguma coisa já no Select postado abaixo, mas não consegui obter os
> dados de campos de foram que foram relacionados na FK :-[
>
> Alguém poderia me dar uma luz?
O que você precisa é o campo RDB$REF_CONSTRAINTS.rdb$const_name_uq,
que indica o nome do constraint referenciado pela chave estrangeira.
Ou seja, a chave primária ou única. Com ele, você volta até a
rdb$index_segments e pega o nome dos campos que compõe esse
constraint.
Tente assim:
SELECT
A.RDB$INDEX_NAME AS INDICE,
A.RDB$RELATION_NAME AS TABELA,
B.RDB$FIELD_NAME AS CAMPOS_INNER,
C.RDB$UPDATE_RULE AS ON_UPDATE,
C.RDB$DELETE_RULE AS ON_DELETE,
IS2.rdb$index_name AS REFERENCED_CONSTRAINT,
IS2.rdb$field_name AS REFERENCED_FIELD
FROM RDB$RELATION_CONSTRAINTS A
LEFT JOIN RDB$INDEX_SEGMENTS B
ON B.RDB$INDEX_NAME = A.RDB$INDEX_NAME
LEFT JOIN RDB$REF_CONSTRAINTS C
ON C.RDB$CONSTRAINT_NAME=A.RDB$INDEX_NAME
LEFT JOIN rdb$index_segments IS2
ON IS2.rdb$index_name = C.rdb$const_name_uq
WHERE
A.RDB$RELATION_NAME = :NOME_TABELA and
A.RDB$CONSTRAINT_TYPE ='FOREIGN KEY'
ORDER BY
A.RDB$INDEX_NAME, B.RDB$FIELD_POSITION
hth,
--
Douglas Tosi
www.sinatica.com
Mais detalhes sobre a lista de discussão lista