GBase 8s 触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。
下面是关于 GBase 8s 触发器几个比较重要的点:
GBase 8s 触发器可以在下面三种触发动作:
在执行操作之前BEFORE(在检查约束并尝试插入、更新、删除或查询之前)。
在执行操作之后AFTER(在检查约束并插入、更新、删除或查询完成之后)。
操作时FOR EACH ROW(当操作修改时每行调用一次)。
触发器操作在引用 NEW.column-name 和 OLD.column-name 表单插入、删除或更新时可以访问每一行元素。其中 column-name 是与触发器关联的表中的列的名称。
BEFORE 或 AFTER 关键字决定何时执行触发器动作,决定是在关联行的插入、修改或删除之前或者之后执行触发器动作。
FOR EACH ROW 动作可能执行多次(按行), BEFORE 动作和AFTER 动作只能执行一次。
要修改的表必须存在于同一数据库中,作为触发器被附加的表或视图,且必须只使用 tablename,而不是 database:tablename。
当创建约束触发器时会指定约束选项。这与常规触发器相同,只是可以使用这种约束来调整触发器触发的时间。当约束触发器实现的约束被违反时,它将抛出异常。
语法
创建触发器时的基础语法如下:
CREATE TRIGGER trigger_name event_name
ON table_name [REFERENCING [NEW AS new] [OLD AS old]]
[BEFORE(statement)]
[FOR EACH ROW [WHEN(condition)](statement)]