Fórum Informações detalhadas Constraints #60469
10/02/2009
0
Olá, tudo bem?
Peguei um select na internet que busca informações detalhadas sobre as constraints de determinada tabela. Segue:
O problema é que ele está duplicando alguns registros. Alguém sabe porque ou tem algum select que faça a mesma coisa mas que não duplique os resultados?
Obrigado.
Peguei um select na internet que busca informações detalhadas sobre as constraints de determinada tabela. Segue:
SELECT rc.RDB$CONSTRAINT_NAME, s.RDB$FIELD_NAME AS field_name, rc.RDB$CONSTRAINT_TYPE AS constraint_type, i.RDB$DESCRIPTION AS description, rc.RDB$DEFERRABLE AS is_deferrable, rc.RDB$INITIALLY_DEFERRED AS is_deferred, refc.RDB$UPDATE_RULE AS on_update, refc.RDB$DELETE_RULE AS on_delete, refc.RDB$MATCH_OPTION AS match_type, i2.RDB$RELATION_NAME AS references_table, s2.RDB$FIELD_NAME AS references_field FROM RDB$INDEX_SEGMENTS s LEFT JOIN RDB$INDICES i ON i.RDB$INDEX_NAME = s.RDB$INDEX_NAME LEFT JOIN RDB$RELATION_CONSTRAINTS rc ON rc.RDB$INDEX_NAME = s.RDB$INDEX_NAME LEFT JOIN RDB$REF_CONSTRAINTS refc ON rc.RDB$CONSTRAINT_NAME = refc.RDB$CONSTRAINT_NAME LEFT JOIN RDB$RELATION_CONSTRAINTS rc2 ON rc2.RDB$CONSTRAINT_NAME = refc.RDB$CONST_NAME_UQ LEFT JOIN RDB$INDICES i2 ON i2.RDB$INDEX_NAME = rc2.RDB$INDEX_NAME WHERE i.RDB$RELATION_NAME=´GMC_PARAMETRO_PRECO´ -- table name and rc.RDB$CONSTRAINT_TYPE = ´FOREIGN KEY´ AND d1.RDB$DEPENDED_ON_NAME <> d2.RDB$DEPENDED_ON_NAME AND d1.RDB$FIELD_NAME <> d2.RDB$FIELD_NAME ORDER BY s.RDB$FIELD_POSITION
O problema é que ele está duplicando alguns registros. Alguém sabe porque ou tem algum select que faça a mesma coisa mas que não duplique os resultados?
Obrigado.
Woinch
Curtir tópico
+ 0
Responder
Posts
11/02/2009
Woinch
Descobri o problema.
Alterar:
Para:
Obrigado.
Alterar:
LEFT JOIN RDB$INDICES i2 ON i2.RDB$INDEX_NAME = rc2.RDB$INDEX_NAME
Para:
left join RDB$INDEX_SEGMENTS s2 on (i2.RDB$INDEX_NAME = s2.RDB$INDEX_NAME and s2.RDB$FIELD_POSITION = s.RDB$FIELD_POSITION)
Obrigado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)