WHEN 条件

作为表上的触发器的选项,可在 WHEN 子句之前加上触发操作以使该操作依赖于测试结果。WHEN 子句由关键字 WHEN 以及跟随在其后的括在圆括号中的条件语句所组成。在 CREATE TRIGGER 语句中,WHEN 子句跟在关键字 BEFORE 、AFTER 或 OR EACH ROW 之后,触发操作列表之前。

当 WHEN 条件存在时,如果它求值为 true,那么按触发操作的出现顺序执行这些操作。如果 WHEN 条件求值为 falseunknown,那么不执行触发操作列表中的操作。如果触发器指定 FOR EACH ROW,那么还将针对每一行对条件进行求值。

在下面的触发器示例中,仅当 WHEN 子句中的条件为 true (即,如果更新后单价高于更新前单价的两倍)时才执行触发操作:
CREATE TRIGGER up_price
          UPDATE OF unit_price ON stock
          REFERENCING OLD AS pre NEW AS post
          FOR EACH ROW WHEN(post.unit_price > pre.unit_price * 2)
          (INSERT INTO warn_tab 
          VALUES(pre.stock_num, pre.manu_code, pre.unit_price,
          post.unit_price, CURRENT));

有关 WHEN 条件的更多信息,请参阅 GBase 8s SQL 指南:语法中的 CREATE TRIGGER 语句。