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
Post a Comment