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

Parece que ya funciona rodrigo. Ya logré que eliminara de la tabla padre,madre,familia,familia_x_hijos.

Te dejo el trigger. Revisalo y si cumple tus expectativas, explicamos paso a paso que era lo que pasaba y por que no funcionaba.

Código sql:
Ver original
  1. CREATE OR REPLACE FUNCTION eliminar_antes_de_nino() RETURNS TRIGGER AS
  2. $$
  3. DECLARE
  4.  
  5. nino record;
  6. padres record;
  7.    
  8. BEGIN
  9.  
  10. DELETE FROM actividad WHERE id_nino=OLD.id_nino;
  11. DELETE FROM beneficio WHERE id_nino=OLD.id_nino;
  12. DELETE FROM educacion WHERE id_nino=OLD.id_nino;
  13. DELETE FROM nino_vive_en WHERE id_nino=OLD.id_nino;
  14. DELETE FROM salud WHERE id_nino=OLD.id_nino;
  15. DELETE FROM trabajo WHERE id_nino=OLD.id_nino;
  16. --DELETE FROM familia_x_hijos WHERE id_nino=old.id_nino;
  17.  
  18. SELECT INTO nino id_familia,COUNT(id_familia) AS numhijos FROM familia_x_hijos WHERE id_nino=OLD.id_nino GROUP BY id_familia;
  19. DELETE FROM familia_x_hijos WHERE id_nino=OLD.id_nino;
  20.  
  21. IF nino.numhijos = 1 THEN  
  22.   SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=nino.id_familia;
  23.   DELETE FROM familia WHERE id_familia=nino.id_familia;
  24.   DELETE FROM padre WHERE rut_padre=padres.rut_padre;
  25.   DELETE FROM madre WHERE rut_madre=padres.rut_madre;  
  26. END IF;      
  27. RETURN OLD;
  28. END;
  29.  
  30. $$
  31. LANGUAGE 'plpgsql';
  32. CREATE TRIGGER borrar_todo_antes_de_nino BEFORE
  33.    DELETE ON nino
  34.    FOR each ROW EXECUTE PROCEDURE eliminar_antes_de_nino();

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