Ver Mensaje Individual
  #6  
Antiguo 23-01-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Marcos.

Para listar todas las claves foráneas, proba de este modo:
Código SQL [-]
SELECT RC.RDB$CONSTRAINT_NAME AS CONSTRAINT_NAME,
       I.RDB$RELATION_NAME AS TABLE_NAME,
       S.RDB$FIELD_NAME AS FIELD_NAME,
       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,
       S.RDB$FIELD_POSITION + 1 AS FIELD_POSITION
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
LEFT JOIN RDB$INDEX_SEGMENTS S2 ON I2.RDB$INDEX_NAME = S2.RDB$INDEX_NAME
WHERE RC.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
ORDER BY S.RDB$FIELD_POSITION

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-01-2013 a las 14:11:18.
Responder Con Cita