Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/05/2009, 14:16
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: como hacer este trigger????

r0xdrig0

La sintaxís que te digo es así. Acomodalo bien para tu caso.

Código sql:
Ver original
  1. CREATE OR REPLACE FUNCTION eliminar_nino() RETURNS TRIGGER AS
  2. $$
  3. DECLARE
  4. nino record;
  5. BEGIN
  6. SELECT INTO nino COUNT(id_familia) AS numhijos FROM familia WHERE id_nino=NEW.id_nino;
  7. IF nino.numhijos = 0 THEN  
  8.   DELETE FROM familia WHERE OLD.id_familia=id_familia;
  9. END IF;
  10. RETURN OLD;
  11. END;
  12. $$
  13. LANGUAGE 'plpgsql';
  14.  
  15. CREATE TRIGGER borrar_antes_de_nino BEFORE
  16. DELETE ON nino
  17. FOR each ROW EXECUTE PROCEDURE eliminar_nino();

Numhijos es el alias que le damos al conteo y que se puede acceder mediante el record. Por eso se llama nino.numhijos para hacer la comparación.

Según entiendo, deseas borrar la familia solo si ya no tiene mas hijos registrados.

Porque borrarias la familia antes de borrar en la tabla niño?
Ten cuidado con el momento en que se ejecutan los eventos.

Este pequeño manual me ha servido mucho.
http://www.scribd.com/doc/102837/Triggers-en-PostgreSQL

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming