Ver Mensaje Individual
  #2  
Antiguo 16-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Cita:
Empezado por GuerreroDelphi Ver Mensaje
Deseo capturar la información relacionada a una excepción en firebird desde Delphi 5. Por ejemplo, si trato de eliminar un registro que es llave foránea, necesito saber las tablas en la que aparece dicha llave, y si es posible también saber información acerca del registro relacionado.
Si alguien me puede colaborar, le agradezco enormemente.
En el mensaje de error "violation of FOREIGN KEY constraint "X"", X es el nombre de la llave foránea. Extraigo ese nombre que está entre comillas dobles para hacer una consulta en los metadatos (Firebird 1.5 y otras versiones).

Normalmente el índice de la llave foránea se llama igual que ésta. Así que, en ese caso, puede hacerse la consulta:
Código SQL [-]
  Select RDB$Relation_Name From RDB$Indices Where RDB$Index_Name = 'X'
Para obtener el nombre de la tabla que tiene esa llave foránea. Y para obtener el nombre del primer campo relacionado con ese índice:
Código SQL [-]
  Select RDB$Field_Name From RDB$Index_Segments Where
    (RDB$Index_Name = 'X') And (RDB$Field_Position = 0)

Esto lo escribí a botepronto, porque ya me retiraba a dormir. Mas espero pueda serte de utilidad.

Un meta abrazo.

Al González.
Responder Con Cita