Subject | Re: Odp: [firebird-support] Trigger not working |
---|---|
Author | Werner |
Post date | 2014-02-24T08:49:53Z |
I tried this one first but still nothing in my log table.Hi,
To debbug trigger use log table in autonomous transaction context avaiable in fb2.5 or use external table which is outside of transaction management
BTW, I created the log table like this:
CREATE GLOBAL TEMPORARY TABLE TRIGGERTEST (
"TYPE" VARCHAR(100),
QUANTITY VARCHAR(30)
) ON COMMIT PRESERVE ROWS;
CREATE OR ALTER trigger bottag_biud0 for bottag
active before insert or update or delete position 0
as
declare variable oldid bigint;
declare variable newid bigint;
declare variable curcap integer;
declare variable oldcap integer;
declare variable newcap integer;
begin
curcap = 0;
oldcap = 0;
newcap = 0;
/* if it was assigned to rack */
if (old.fk_winerackit_id is not Null) then
begin
select id, usedcapacity from winerackit wi
where wi.id = old.fk_winerackit_id
into :oldid, :curcap;
oldcap = :curcap-1;
end
/* if it is newly assigned to rack */
if (new.fk_winerackit_id is not Null) then
begin
select id, usedcapacity from winerackit wi
where wi.id = new.fk_winerackit_id
into :newid, :curcap;
newcap = :curcap+1;
end
if (:oldid is not Null) then
update winerackit set usedcapacity=:oldcap
where winerackit.id = :oldid;
in autonomous transaction
do
begin
insert into triggertest (type, quantity) values('old', :oldcap);
end
if (:newid is not Null) then
update winerackit set usedcapacity=:newcap
where winerackit.id = :newid;
in autonomous transaction
do
begin
insert into triggertest (type, quantity) values('new', :newcap);
end
end
But I must still be missing something as nothing is written to "triggertest".
I know that trigger runs and it has the correct values for my current test case. I proved that with an exception just after the 'insert into triggertest (type, quantity) values('old', :oldcap);" and the value for oldcap and oldid are the correct one.
Werner