语句级触发器与行级触发器
语句级的触发器是指执行每个 SQL 时,只执行一次,行级触发器则指每行都会执行一次。
一个修改零行的操作会导致合适的语句级触发器被执行,但不会触发行级触发器。
批量插入时,语句级别的触发器只触发一次,不管 affected row 是否为 0,但是行级触发器的触发次数为 affected row。
before/after trigger for each row
对于 BEFORE 和 INSTEAD OF 这类行级触发器来说,如果返回的是 NULL,则表示忽略当前行的操作。
如果返回非 NULL(例如NEW/OLD) 的行,对于 INSERT 和 UPDATE 操作来说,返回的行将成为被插入的行或将要更新的行。
对于 AFTER 这类行级触发器来说,其返回值会被忽略。
例子:创建主表和分区表,在主表的触发器函数中,insert分区表。根据触发器函数返回不同,主表和分区表中的是否有数据。具体如下:
项目 | 返回 | 主表 | 分区表 |
---|---|---|---|
before | NULL | 无 | 有 |
before | NEW | 有 | 有 |
after | NULL | 有 | 有 |
触发器创建和应用
1.创建主表
CREATE TABLE test.table_name (
field1 type,
field2 type(len