Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
10.0.2.0
-
None
-
Windows XP SP1 Windows
-
Low
Description
I image that this is a documentation problem. The "words" around triggers seem to imply the ability to do actions "BEFORE" the INSERT/UPDATE/DELETE. For instance:
"Along with constraints, triggers can help enforce data integrity rules with actions such as cascading deletes or updates. Triggers can also perform a variety of functions such as issuing alerts, updating other tables, sending e-mail, and other useful actions."
Well, the CREATE TRIGGER command only allows AFTER as an option (even though the SYSTRIGGERS catalog uses "B" for before and "A" for after) and it won't allow a CALL statement to be processed. Seems to me that there aren't any ways to send an e-mail, issue alerts (no SIGNAL function either), or enforce integrity rules. How can you enforce integrity rules if invalid data comes in? I can't force a SIGNAL or error with the trigger, so this is useless for validating changes to the data.
In addition, there appears to be some logic regarding BEFORE triggers in Derby, but its not currently working.
CREATE TRIGGER CB NO CASCADE BEFORE
INSERT ON BONUSES
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
UPDATE BONUSES
SET BONUS =
CASE
WHEN (n.BONUS = 0) THEN 100
ELSE n.BONUS
END;
ERROR 42Z9D: 'UPDATE' statements are not allowed in 'BEFORE' triggers.