触发器是 OceanBase 数据库中提供的功能,它类似过程和函数,有声明,执行和异常处理过程的 PL 块。触发器基于特定事件被执行,可以指定触发器是在事件之前还是之后触发,以及触发器是针对单个事件还是被事件执行影响的某行数据。

    触发器是个独立的对象,当某个事件发生时自动地隐式运行,而且触发器不能接收参数。这里的事件指的是对数据库的表进行的 INSERT、UPDATE 及 DELETE 操作。

    注意

    OceanBase 数据库 V2.2.7x 版本及以下只支持表上的行级触发器。

    一个简单的触发器的触发时机有四个点:

    • 在事件执行之前(语句级别的 BEFORE 触发器)

    • 在事件执行之后(语句级别的 AFTER 触发器)

    • 在每行被事件执行影响之前(行级的 BEFORE 触发器)

    • 在每行被事件执行影响之后(行级的 AFTER 触发器)

    一个 DML 语句可能会触发多个简单的触发器,触发执行顺序是:语句级 BEFORE 触发器 -> 行级 BEFORE 触发器 -> 行级 AFTER 触发器 -> 语句级 AFTER 触发器。同一类型的触发器的执行顺序是不确定的,当前暂不支持指定触发器执行顺序。