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

hola amigos aca yo otra vez, probe agregandole el group by SELECT INTO nino id_familia,count(id_familia) AS numhijos FROM familia_x_hijos WHERE id_nino=old.id_nino group by id_familia; bueno esta vez si me elimina todos los datos de las otras tablas, pero no me elimina los datos del niño y de los padres en las tablas familia, familia_x_hijos, padre y madre y ya no se pq, los triggers q tengo para esto son:

este es el trigger q me elimina los datos de todas las otras tablas excepto los datos de las tablas familia, padre y madre este trigger es:
Código:
Create or replace function eliminar_antes_de_nino() returns trigger as

$$
declare
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;

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();
y este es el trigger q me deberia eliminar los datos de las tablas familia, padre y madre:
Código:
CREATE OR REPLACE FUNCTION eliminar_familia() returns TRIGGER AS

            $$

            declare
            nino record;
            padres record;
            Begin

            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 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;
  
            end IF;

            RETURN old;
  
            End;

            $$

            LANGUAGE 'plpgsql';

            CREATE TRIGGER borrar_familia_antes_d_menor before

            DELETE ON nino

   for each row execute procedure eliminar_familia();
pero no me funciona no me eliminan los datos de las tablas familia, padre y madre porfavor amigos ayuda!!!! en q estoy fallando?? ruego su ayuda este me tiene desesperadoooo!!!! de antemano gracias .... bye