Subject Re: [firebird-support] problem with before update trigger
Author Helen Borrie
At 09:27 AM 10/12/2009, you wrote:
>hi ,
>maybe it is late , so i can't be over
>a little silly problem :
>in a table i have a field 'testupdated' ,
>in the same table in the before update event i have
>a trigger : ' mytable.testupdated = 'S' ,
>of course i can''t set its value to 'N' ......that trigger will change it in 'S' ,
>is it possible to exclude fields from that event ?
>.... in other words : don't fire the trigger when the field 'testupdated' changes

First, never refer to the "self" table. When you refer to fields in the self table, refer to the "old" and "new" arrays.

Next, don't do unconditional operations in triggers unless you INTEND for them to be unconditional.

Replace this line with:

if (
(old.testupdated is null and new.testupdated is not null)
(new.testupdated = old.testupdated)
(new.testupdated is null and old.testupdated is not null)

) then
new.testupdated = 'S';

(or whatever logic you intend to achieve with this trigger...)