Hello, Werner!

Saturday, February 22, 2014, 9:31:19 PM, you wrote:

W> I have the following trigger which doesn't work for me, i.e. the columns
W> in winerackit are never updated by it.

W> In my current test case the 'fk_winerackit_id' column is set to "Null",
W> so I would expect this trigger to fire and set the 'usedcapacity' column
W> to '0' as it was '1' before the update to the bottag table.

W> CREATE OR ALTER trigger bottag_biud0 for bottag
W> active after insert or update or delete position 0
W>    if (old.fk_winerackit_id is not Null) then
W>    if (new.fk_winerackit_id is not Null) then

maybe that ?

 http://www.firebirdsql.org/refdocs/langrefupd21-ddl-trigger.html

In multi-action triggers, both context variables OLD and NEW are always 
available.
If you use them in the wrong situation (i.e. OLD while inserting or NEW while 
deleting), the following happens:
- If you try to read their field values, NULL is returned.
- If you try to assign values to them, a runtime exception is thrown.

I think, when using new/old in multi-action triggers you should
directly use context variables INSERTING, UPDATING and DELETING to
avoid ambiguity of the code.

-- 
Dmitry Kuzmenko, www.ib-aid.com

Reply via email to