hola huesos, la estructura de mi tabla niño es
|id_nino (pk)| |nombre_nino| apellido_nino| etc...|
lo q necesito es q se me elimine a los padres una vez q se elimine al niño y ya la familia no tenga mas hijos pq hasta ahora solo me elimina las demas tablas pero no me elimina los datos de la tabla familia ni de las tablas padre y madre cuando la familia ya no tiene mas hijos y por lo tanto deja de existir.... las estructura de mis tablas es:
tabla familia:
|id_familia(pk) |rut_madre (fk)| rut_padre (fk)|
tabla padre:
|rut_padre|nombre_padre|etc...|
tabla madre:
|rut_madre (pk)| nombre_madre| etc...|
tabla familia_x_hijos
|id_familia (pk) (fk tabla familia)| id_nino (pk) (fk tabla nino)|
lo q no he podido lograr es q se elimine a la familia en la tabla familia y al padre y a la madre en sus respectivas tablas una vez q se elimina al niño y la familia ya no tiene mas hijos, logro eliminar todo en las demas tablas pero menos en esas q nombre, (ojala me entiendan) los triggers q qtengo para esto son:
TRIGGER ELIMINAR ANTES DE NIÑO:
Código:
Create or replace function eliminar_antes_de_nino() returns trigger as
'
declare
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;
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 trigger me elimina los datos de todas las tablas antes de borrar al niño, pero no me borra familia_x_hijos
TRIGGER BORRAR FAMILIA ANTES DE NIÑO:
Código:
CREATE OR REPLACE FUNCTION eliminar_familia() returns TRIGGER AS
$$
declare
nino record;
Begin
SELECT INTO nino count(id_familia) AS numhijos FROM familia_x_hijos WHERE id_nino=old.id_nino;
IF nino.numhijos = 0 then
DELETE FROM familia WHERE old.id_familia=id_familia;
end IF;
RETURN old;
End;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER borrar_familia_antes_d_menor before
DELETE ON nino
este trigger me elimina a la familia una vez q la familia ya no tiene mas hijos, pero no me funciona, y mi pregunta es como lo tengo q hacer para q una vez q me borre a la familia en caso q no tenga mas hijos, como borro al padre y a la madre de sus respectivas tablas, ya q como dije anteriormente logro borrar todos los datos de las demas tablas excepto los datos de las tablas padre, madre, familia_x_hijos y la tabla familia. como lo debo hacer en cuanto a codigo q debo agregar y como??? porfavor amigos llevo mucho tiempo tratando de hacerlo pero no lo logro RUEGO SU AYUDA AMIGOS!!!!.... de antemano gracias ... bye