el problema está que en la tabla de lineas , tienes una referencia a la tabla cabecera y el 'ondelete cascade' como regla en la clave ajena.
este 'ondelete cascade' se ejecuta por defecto cuando has borrado el registro (after delete) , con lo que cuando se borra algun registro de la cabecera y desde un triger en en el delete de las lineas intentas acceder a la cabecera , esta ya no existe.
la solucion está en modificar este trigger de la tabla lineas (aunque realmente se ejecutacuando en el after delete de la cabecera) que genera firebird automáticamente y pasarlo de 'after delete' , a 'before delete' .
esto lo puedes hacer con ibexpert, entras en las dependencias de la tabla lineas , y verás que en triggers , tienes alguno que se llama checkxx , ( si tienes varios has de buscar el que hace referencia al campo que enlaza con la tabla cabecera) y cambiar la regla , de after a before.
Tambien puedes hacerlo de otra forma mas facil , quitas el 'ondelete' automatico , y crear tu manualmente el trigger en la cabecera , para que en el before delete de la cabecera , elimine las lineas.
es un poco lioso , pero espero haberlo aclarado.
saludos.
Última edición por tefots fecha: 03-11-2006 a las 15:00:42.
|