Subject Re: A error of too many concurrent execution of the same request on a trigger - Email found in subject
Author ibmcom2011
Sorry.

The description is a part of my trigger, some infomation was omitted. Originally, I want to explain it simply, but difficult to see.

The trigger is a After Update & Delete trigger.

TABLE1 structure (show simply)

ID ---------- Num1 ---------- Num2 --------- BALANCE
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 BALANCE will be changed followed.


The defination (TABLE1 -- table name):

CREATE OR ALTER TRIGGER TABLE1_AUD0 FOR FIN_ACC_CASH_DIARY
ACTIVE AFTER UPDATE OR DELETE POSITION 0
AS
declare variable ye numberic(7,2);
declare variable nID integer;
declare variable maxID integer;
begin
ye = 0;
nid = 0;
maxid = 0;
if (updating or (deleting) ) then
begin
select max(f_acd_id) from Table1 into :maxID; /* find the max id in table1 for looping high range*/
nid = old.f_acd_id;

while (nid < :maxid) do /*loop all records and update Column BALANCE after the cursor which have been modified or deleted */
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
end



--- In firebird-support@yahoogroups.com, "Leyne, Sean" <Sean@...> wrote:
>
>
>
> > The trigger is like this:
>
> What is the TRIGGER declaration, what table? BEFORE or AFTER??
>
>
>
> > 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;
>
> "Ye" is not declared as a variable.
>
> If you are trying to refer to the "Ye" column, only "old.ye" and "new.ye" context variables are available.
>
>
> Sean
>