Hola huesos gracias por tu respuesta, y si tengo dos triggers bueno tres estos son:
1- el q me actualiza el estado de la familia y de los padres, (los activa y los desactiva) y el otro es el q me activa o desactiva los restantes datos de niñocomo por ejemplo; salud, educacion trabajo etc... estos son mis dos trggers:
TRIGGER QUE ACTIVA O DESACTIVA FAMILIA, PADRE Y MADRE:
Código:
CREATE OR REPLACE FUNCTION cancelar_familia_antes_de_nino() returns TRIGGER AS
$$
DECLARE
ninos record;
padres record;
BEGIN
SELECT INTO ninos T1.IF AS id_familia, count(fxh.id_familia) AS numhijos FROM
(SELECT id_familia AS IF FROM familia_x_hijos WHERE id_nino=new.id_nino)AS T1
INNER JOIN familia_x_hijos fxh ON T1.IF = fxh.id_familia
GROUP BY T1.IF;
IF old.estado='ACTIVO' then
UPDATE familia_x_hijos SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
ELSEIF old.estado='DESACTIVADO' then
UPDATE familia_x_hijos SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
IF ninos.numhijos = 1 then
IF old.estado='ACTIVO' then
SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=id_familia;
UPDATE familia SET estado = 'DESACTIVADO' WHERE id_familia=id_familia;
UPDATE padre SET estado = 'DESACTIVADO' WHERE rut_padre=rut_padre;
UPDATE madre SET estado = 'DESACTIVADO' WHERE rut_madre=rut_madre;
ELSEIF old.estado='DESACTIVADO' then
UPDATE familia SET estado = 'ACTIVO' WHERE id_familia=id_familia;
UPDATE padre SET estado = 'ACTIVO' WHERE rut_padre=rut_padre;
UPDATE madre SET estado = 'ACTIVO' WHERE rut_madre=rut_madre;
END IF;
END IF;
END IF;
RETURN new;
end;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER cancelar_familia_antes_de_nino before
UPDATE ON nino
FOR each row execute procedure cancelar_familia_antes_de_nino();
Y ESTE ES EL Q ME ACTIVA O DESACTIVA LOS RESTANTES DATOS DEL NIÑO (EDUCACION, SALUD, TRABAJO... ETC)
Código:
CREATE OR REPLACE FUNCTION cancelar_antes_de_nino() returns TRIGGER AS
$$
DECLARE
ninos record;
padres record;
BEGIN
SELECT INTO ninos id_nino FROM nino WHERE id_nino=NEW.id_nino;
IF old.estado='ACTIVO' then
UPDATE actividad SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
UPDATE beneficio SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
UPDATE educacion SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
UPDATE nino_vive_en SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
UPDATE salud SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
UPDATE trabajo SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
UPDATE visita SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
ELSEIF old.estado='DESACTIVADO' then
UPDATE actividad SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
UPDATE beneficio SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
UPDATE educacion SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
UPDATE nino_vive_en SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
UPDATE salud SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
UPDATE trabajo SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
UPDATE visita SET estado = 'ACTIVO' WHERE id_nino=NEW.id_nino;
END IF;
RETURN new;
End;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER cancelar_todo_antes_de_nino before
UPDATE ON nino
FOR each row execute procedure cancelar_antes_de_nino();
ahora mi pregunta es como deberia hacerlo para juntar ambos triggers en solo uno??? para q asi me funcione la activacion o desactivacion del trigger????? PORFAVOR amigos ruego su ayuda/guia para poder solucionar esto, ya q me tiene truncadicimo!!!! porfavor!!!!!..... de antemano gracias.... bye...
PD: sorry a todos en especial a huesos porla pasiencia, de verdad mi intension no es molestar ruego disculpen las molestias.