Ver Mensaje Individual
  #28 (permalink)  
Antiguo 22/06/2009, 18:37
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: como hacer este trigger????

rodrigo.

prueba esto:
Código sql:
Ver original
  1. SELECT INTO nino id_familia,COUNT(id_familia) AS numhijos FROM familia_x_hijos WHERE id_nino=OLD.id_nino;
  2.  
  3.  
  4.             IF nino.numhijos = 0 THEN  
  5.  
  6.                        
  7.               SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=nino.id_familia;
  8.  
  9.               DELETE FROM familia WHERE id_familia=nino.id_familia;
  10.  
  11.               DELETE FROM padre WHERE rut_padre=padres.rut_padre;
  12.  
  13.               DELETE FROM madre WHERE rut_madre=padres.rut_madre;

Sin embargo, lo que interesa es que entiendas bien que estas tratando de hacer y por que se dan los errores. La sentencia que te pasé en un ppio, fue error mio, por mirar mal la estructura de tus tablas en un post anterior, lo importante es saber la jerarquia de las tablas y cual debe ser el orden de borrado que se debe llevar a cabo.

Fijate que me valgo del id_familia para obtener el padre y madre de ese niño. padres es una nueva variable tipo record que debes declarar. Revisa muy bien las relaciones que existen entre las tablas y establece un orden de borrado.

Recuerda que los valores new. y old. se dan unicamente, cuando son los campos que intervienen en la tabla, para este caso el id_nino. Los que no estén involucrados, deben ser hallados basados en consultas.

Cuentanos como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming