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 table1 where f_acd_id < :nid
order by f_acd_id desc
into :ye;

update table1 
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