Subject Re: [firebird-support] How to skip a trigger in the same trigger?
Author Martijn Tonies (Upscene Productions)
Hello Gabor,

>>> First question: why do you have an UPDATE <table1> in a BEFORE UPDATE
>> trigger on <table1>?
>>The table have many fields and a UNIQUE constraint with four fields, one
>>the ISDEFAULT from it (only one default accepted for groups of rows
>>depend on the other three fields (which included also in the UNIQUE)
>>value). If the user change the default row to not default and set other
>>to default in the application I need to set the old default row to not
>>default because if not do before set the new default the UPDATE violate
>>the UNIQUE.
>I agree with Dimitry, you might want to revise this design. If you have a
>table with a single value and a reference to this table, there can be only
>1 default
>row, by design.
>Removing a row from this table and inserting a new one (or updating the old
>would then always have a single row assigned to be the default and avoids
>the recursive trigger.

Alternatively, make this part of the trigger only fire when ISDEFAULT = T,
then you can safely set ISDEFAULT to 'F' from within the trigger.

With regards,

Martijn Tonies
Upscene Productions

Download Database Workbench for Oracle, MS SQL Server, Sybase SQL
Anywhere, MySQL, InterBase, NexusDB and Firebird!