Hi,

I try to update a column value in a trigger after updating a row, but it raises 
a error of too many concurrent execution of the same request.
I know this is caused by recursion, but I can't avoid it. 
I want update a column value of all the rows which is after the updating rows.

ID ---------- Num1 ---------- Num2 --------- YE
1  ----------  15  ---------- 25  ---------- 28
2  .......
3  .......-----------------------------------32 
4  ------------20 ----------- 35  -----------27 ---> 32+20-35 =27 
5
6
7

if in row 4, then num1 or num2 is changed, then for the rows 4 to 7, 
the columns YE will be changed followed. 

---------------------------------------------------------------------

The trigger is like this:


declare variable nID integer;
declare variable maxid integer;


  if (updating or (deleting) ) then
  begin
    select max(f_acd_id) from table1 into :maxID;   
    nid = old.f_acd_id;

    while (nid < :maxid) do        
    begin
      select first 1 balance from fin_acc_cash_diary
             where f_acd_id < :nid
             order by f_acd_id desc
             into :ye;

      update fin_acc_cash_diary
            set balance = :ye + new.num1 - new.num2 
            where f_acd_id = :nid;
      nid = :nid + 1;
    end
  end

Looking forward to your help, thanks.




Reply via email to