Ver Mensaje Individual
  #37 (permalink)  
Antiguo 23/06/2009, 19:47
r0xdrig0
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: como hacer este trigger????

hola huesos sorry por todo, de verdad sorry por aun estar con el problema e insistir, pero
no me funciona, probe la ultima manera q me dijiste pero aun no me elimina ni de la tabla
familia ni de las tablas padre y madre de verdad no se pq no me elimina, pero porfavor ruego
su ayuda para lograr saber en q estoy fallando, si la tabla familia se compone de id_familia
como pk y de rut_madre y rut_padre como fk pertenecientes a estas respectivas tablas al tener esta composicion en q estare falland si
al eliminar a mano a la familia antes de eliminar al padre y la madre de sus tablas si
me las elimina pero no me permite eliminar primero al padre y a la madre antes de eliminar
a la familia q componen estos en la tabla familia, esta bien esta composicion o ahi estoy fallando???
porfavor amigos ruego su ayuda!!! estoy realmente desesperado porfavor ayuda!!! de antemano gracias.... bye

PD: la forma como lo probe ultimamente es esta:
Código:
      CREATE OR REPLACE FUNCTION eliminar_antes_de_nino() returns TRIGGER AS
 
       
  
      $$
   
      declare
   
                  nino record;
   
                  padres record;
  
      Begin
   
      DELETE FROM actividad WHERE old.id_nino=id_nino;
   
       
 
      DELETE FROM beneficio WHERE old.id_nino=id_nino;
 
       
  
      DELETE FROM educacion WHERE old.id_nino=id_nino;
 
       
  
      DELETE FROM nino_vive_en WHERE old.id_nino=id_nino;
  
       
        DELETE FROM salud WHERE old.id_nino=id_nino;
  
       
  
      DELETE FROM trabajo WHERE old.id_nino=id_nino;

     
  
       
  
      SELECT INTO nino id_familia,count(id_familia) AS numhijos FROM familia_x_hijos WHERE id_nino=old.id_nino GROUP BY id_familia;
  
       
  
        IF nino.numhijos = 0 then  
  
           SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=nino.id_familia;

           
  
           DELETE FROM padre WHERE rut_padre=padres.rut_padre;
  
           DELETE FROM madre WHERE rut_madre=padres.rut_madre;

           DELETE FROM familia WHERE id_familia=nino.id_familia;
 
        end IF;
  
       
   DELETE FROM familia_x_hijos WHERE old.id_nino=id_nino;
      
  
       
  
      RETURN old;
  
      End;
  
      $$
  
       
  
      LANGUAGE 'plpgsql';
 
       
  
      CREATE TRIGGER borrar_todo_antes_de_nino before
  
      DELETE ON nino
  
      FOR each row execute procedure eliminar_antes_de_nino();