Hola huesos, probe como me sugeriste, pero no pe compila y no se pq :S
me manda error en la linea del END; no se pq, no se como deberia ser la sintaxis, probe colocando un end; despues de cada end if pero me sigue dando el error q es este
Código:
ERROR: syntax error at or near ";"
Estado SQL:42601
Caracter: 1756
bueno aqui pego el code de mi trigger para q porfavor me echen una mano para saber pq no me compila y como deberia ser..... porfavor amigos ruego su ayuda!!!! mi code del trigger es:
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;
UPDATE familia_x_hijos SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
IF ninos.numhijos = 1 then
IF nino.old.estado='ACTIVO' then
SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=ninos.id_familia;
UPDATE familia SET estado = 'ACTIVO' WHERE id_familia=ninos.id_familia;
UPDATE padre SET estado = 'ACTIVO' WHERE rut_padre=padres.rut_padre;
UPDATE madre SET estado = 'ACTIVO' WHERE rut_madre=padres.rut_madre;
ELSE
IF nino.old.estado='DESACTIVADO' then
UPDATE familia SET estado = 'DESACTIVADO' WHERE id_familia=ninos.id_familia;
UPDATE padre SET estado = 'DESACTIVADO' WHERE rut_padre=padres.rut_padre;
UPDATE madre SET estado = 'DESACTIVADO' WHERE rut_madre=padres.rut_madre;
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();
porfavor ruego su ayuda amigos!!!! de antemano gracias..... bye