¡Hola a todos!
Cita:
Empezado por GuerreroDelphi
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.