Trigger
tip
- trigger 函数不能定义参数,通过 TG_ARGV 接收参数
| var | for |
|---|---|
| NEW | |
| OLD | |
| TG_NAME | trigger name |
| TG_WHEN | BEFORE/AFTER/INSTEAD OF |
| TG_LEVEL | ROW/STATEMENT |
| TG_OP | INSERT/UPDATE/DELETE/TRUNCATE |
| TG_RELID | oid of table |
| name of table | |
| TG_TABLE_NAME | name of table |
| TG_TABLE_SCHEMA | schema of table |
| TG_NARGS | number of arguments |
| TG_ARGV | arguments |
| TG_EVENT | |
| TG_TAG |
- 返回类型
trigger- 数据变化 - 返回类型
event_trigger- 数据库事件 - 自动创建变量
TG_<NAME> - 返回
NULL或 record/row BEFORErow- 返回
NULL则不会触发实际操作 - INSERT/UPDATE/DELETE - 修改 NEW 返回会使用新的值
- DELETE 返回内容无意义,但需要 非 NULL
- 此时 NEW 为 NULL,一般返回 OLD
- 返回
INSTEAD OF- 只能是 row 级别,只支持 view
event_trigger- DDL 事件- TG_EVENT, TG_TAG
ALTER|CREATE|DROP|COMMENT|GRANT|REVOKE|IMPORT FOREIGN SCHEMA|REFRESH MATERIALIZED VIEWSECURITY LABEL,SELECT INTO
- 参考
create or replace function insert_entity_sid() returns trigger as
$$
begin
if NEW.sid is null then
NEW.sid := next_entity_sid(TG_ARGV[0], NEW.tid);
end if;
return new;
end;
$$ language plpgsql;