CREATE OR REPLACE FUNCTION public.tr_raktar_mozgas_polc_afterinsert()
  RETURNS trigger AS
$BODY$declare

  v_forras_raktar_kod raktar_mozgas_fej.forras_raktar_kod%type;
  v_cel_raktar_kod    raktar_mozgas_fej.cel_raktar_kod%type;
  v_tetel_kod         tetel_raktar.tetel_kod%type;
begin

  SELECT rmf.forras_raktar_kod, rmf.cel_raktar_kod, rm.tetel_kod INTO v_forras_raktar_kod, v_cel_raktar_kod, v_tetel_kod
     FROM raktar_mozgas rm
     LEFT JOIN raktar_mozgas_fej rmf ON rmf.kod = rm.fej_kod
     WHERE rm.kod = new.rm_kod;

  IF (v_forras_raktar_kod <> 0) THEN
     IF (SELECT count(*) FROM tetel_raktar_polc WHERE raktar_kod = v_forras_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim) = 0 THEN
        INSERT INTO tetel_raktar_polc (raktar_kod,tetel_kod,polc_cim,mennyiseg) VALUES (v_forras_raktar_kod,v_tetel_kod,new.polc_cim,0);
     END IF;

     UPDATE tetel_raktar_polc 
        SET mennyiseg = mennyiseg - new.mennyiseg 
      WHERE raktar_kod = v_forras_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim;
  END IF;

  IF (v_cel_raktar_kod <> 0) THEN
     IF (SELECT count(*) FROM tetel_raktar_polc WHERE raktar_kod = v_cel_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim) = 0 THEN
        INSERT INTO tetel_raktar_polc (raktar_kod,tetel_kod,polc_cim,mennyiseg) VALUES (v_cel_raktar_kod,v_tetel_kod,new.polc_cim,0);
     END IF;

     UPDATE tetel_raktar_polc 
        SET mennyiseg = mennyiseg + new.mennyiseg 
      WHERE raktar_kod = v_cel_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim;
  END IF;

  return new;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
  
CREATE TRIGGER trigger_raktar_mozgas_polc_after_insert
  AFTER INSERT
  ON public.raktar_mozgas_polc
  FOR EACH ROW
  EXECUTE PROCEDURE public.tr_raktar_mozgas_polc_afterinsert();