DROP TRIGGER trigger_egysegarak_ujtetel ON egysegarak;
DROP TRIGGER trigger_raktar_nevek_ujtetel ON raktar_nevek;

DROP TRIGGER trigger_tetel_ujtetel1 ON tetel;
DROP TRIGGER trigger_tetel_ujtetel2 ON tetel;

DROP FUNCTION tr_tetel_egysegar_frissitese();
DROP FUNCTION tr_tetel_raktar_frissitese();


CREATE OR REPLACE FUNCTION tr_tetel_egysegar_frissitese()
  RETURNS "trigger" AS
'begin
   INSERT INTO tetel_egysegar
      (Tetel_kod, Egysegar_kod, afa_kulcs)
   Select tetel.kod, egysegarak.kod, tetel.afa_kulcs
     FROM tetel CROSS JOIN egysegarak
     left outer
     join tetel_egysegar
     on (tetel.kod = tetel_egysegar.Tetel_kod) and
        (egysegarak.kod = tetel_egysegar.Egysegar_kod)
     where tetel_egysegar.Tetel_kod is null;
   return new;
end;'
  LANGUAGE 'plpgsql' VOLATILE;

CREATE OR REPLACE FUNCTION tr_tetel_raktar_frissitese()
  RETURNS "trigger" AS
'begin
   INSERT INTO tetel_raktar
      (Tetel_kod, Raktar_kod)
   Select tetel.kod, raktar_nevek.kod
     FROM tetel CROSS JOIN raktar_nevek
     left outer
     join tetel_raktar
     on (tetel.kod = tetel_raktar.Tetel_kod) and
        (raktar_nevek.kod = tetel_raktar.Raktar_kod)
     where tetel_raktar.Tetel_kod is null;
   return new;
end;'
  LANGUAGE 'plpgsql' VOLATILE;




CREATE TRIGGER trigger_egysegarak_ujtetel
  AFTER INSERT
  ON egysegarak
  FOR EACH ROW
  EXECUTE PROCEDURE tr_tetel_egysegar_frissitese();

CREATE TRIGGER trigger_raktar_nevek_ujtetel
  AFTER INSERT
  ON raktar_nevek
  FOR EACH ROW
  EXECUTE PROCEDURE tr_tetel_raktar_frissitese();

CREATE TRIGGER trigger_tetel_ujtetel1
  AFTER INSERT
  ON tetel
  FOR EACH ROW
  EXECUTE PROCEDURE tr_tetel_egysegar_frissitese();

CREATE TRIGGER trigger_tetel_ujtetel2
  AFTER INSERT
  ON tetel
  FOR EACH ROW
  EXECUTE PROCEDURE tr_tetel_raktar_frissitese();
