Hi,

Did a bit of googling and found the trick of putting in an exception and 
I also changed it to try to write to a temp table.

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;
      insert into triggertest (type, quantity) values('old', :oldcap);
   if (:newid is not Null) then
      update winerackit set usedcapacity=:newcap
         where winerackit.id = :newid;
      insert into triggertest (type, quantity) values('new', :newcap);
end

The exception I had after the insert into triggertest but I don't see 
any entry in triggertest with or without the exception.

The excption shows me that the oldcap/newcap values are what I would 
expect but they are never written to the table.

Anyone sees what stupid mistake I make?

Werner

Reply via email to