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 originalCREATE OR REPLACE FUNCTION eliminar_antes_de_nino() RETURNS TRIGGER AS
$$
DECLARE
nino record;
padres record;
BEGIN
DELETE FROM actividad WHERE id_nino=OLD.id_nino;
DELETE FROM beneficio WHERE id_nino=OLD.id_nino;
DELETE FROM educacion WHERE id_nino=OLD.id_nino;
DELETE FROM nino_vive_en WHERE id_nino=OLD.id_nino;
DELETE FROM salud WHERE id_nino=OLD.id_nino;
DELETE FROM trabajo WHERE id_nino=OLD.id_nino;
--DELETE FROM familia_x_hijos WHERE id_nino=old.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;
DELETE FROM familia_x_hijos WHERE id_nino=OLD.id_nino;
IF nino.numhijos = 1 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;
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();
Nos cuentas como te va.