hola amigos, especialmente huesos he seguido intentando pero no he podido eliminar los datos de las tablas padre, madre y familia, el orden de eliminacion debe ser este:
1- eliminar datos del niño y la familia de la tabla familia_X_hijos
2- eliminar datos del padre y la madre desde la tabla familia
3- eliminar los datos de los padres de las tablas padre y madre
4- por ultimo eliminar datos del niño desde la tabla niño
este es el orden y mi triggerq tengo es:
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 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;
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();
este es mi trigger q me lo hace, pero solo logra eliminarme los datos de la tabla familia_x_hijos y no me elimina los datos de la tablas familia, padre y madre, lo q no me explico es pq el SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=nino.id_familia; no me permite borrar los datos de las tabla familia, padre y madre pq no me toma esta parte???;
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;
en q estoy fallando??? como dije anteriormente el orden debe ser
primero eliminar los datos del niño y de la familia a la q pertenece desde la tabla familia_x_hijos, segundo debe eliminarce los datos de la tabla familia donde esta el id de la familia y el rut del padre y la madre q pertenecen a esa familia y por ultimo deben eliminarce los datos del padre y la madre de sus respectivas tablas, porfavor amigos diganme en q estoy fallando porfavor!!!! llevo dias intentando esto y no logro solucionarlo porfavor estoy desesperado!!!! ruego su ayuda.... de antemano gracias.... bye