Hola huesos, perfecto gracias por tu ayuda ya los uni y me funcionan bien, ahora probare lo de activar y desactivar el trigger... cualquier cosa vuelvo a postear, pero aqui dejo el trigger q uni y me funciona perfecto.... lo dejo para q si a alguien le puede servir de ayuda.... :
Código:
CREATE OR REPLACE FUNCTION cancelar_familia_antes_de_nino() returns TRIGGER AS
$$
DECLARE
ninos record;
padres record;
BEGIN
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;
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;
SELECT INTO ninos id_nino FROM nino WHERE id_nino=NEW.id_nino;
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();
ese es bueno cualquier cosa vuelvo a postear .... gracias nuevamente.... bye