sql - trigger after on insert, error table mutation upon inserting record -


i have created trigger update payment table (for bill) when new record inserted table enrollment. trigger follows:

create or replace trigger enrollfee_trig after insert on enrollment each row  declare amount payment.totalprice%type; id payment.learnerid%type;  begin select sum(price) amount learnerenrollcourse_view learnerid = :new.learnerid , paid = 'n';  select learnerid id payment learnerid = :new.learnerid , paymentdate null;  if sql%found update payment  set totalprice = amount  learnerid = :new.learnerid     , paymentdate null; else   insert payment values      (paymentid_seq.nextval, :new.learnerid, '', amount);   end if;  end; / 

the trigger can created successfully. when inserting new record enrollment table, there error saying ' table enrollment mutating, trigger/function may not see it'. want know more specific problem causing , how can solve it.

mutating table exceptions occur when try reference triggering table in query within row-level trigger code. see more here

in instance suspect ( though don't know there no definition learnerenrollcourse_view ) problem caused statement :-

select sum(price) amount learnerenrollcourse_view learnerid = :new.learnerid , paid = 'n'; 

if learnerenrollcourse_view view refers enrollment table, mutating table error. there number of ways round it, moving trigger code statement level trigger , holding data in package variables 1 workaround, in general though, think using triggers not best way this, more triggers have, more run , other problems. instead, have api package enrollment table, , move trigger code there.

good discussion of triggers here


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -