Ver Mensaje Individual
  #4  
Antiguo 03-11-2006
tefots tefots is offline
Miembro
 
Registrado: feb 2005
Posts: 108
Reputación: 20
tefots Va por buen camino
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.
Responder Con Cita