openGauss

开源数据库

openGauss社区官网

开源社区

openGauss/MogDB数据库触发器分两步拆解创建

彭冲2021-12-05openGauss/MogDB数据库触发器分两步拆解创建

openGauss/MogDB 数据库触发器分两步拆解创建

Oracle 触发器参考例子

CREATE OR REPLACE TRIGGER ora_trigger AFTER UPDATE OR INSERT OR DELETE ON tab_x FOR each row
declare
  ...
begin
  ...
  insert into tab_x ...;
end;
/

针对上面的例子,PostgreSQL 里需要分两步来操作

1.先创建“触发器函数”

“触发器函数”是返回类型为 trigger 的函数,把上面的业务逻辑提取到下面的函数里面。

CREATE FUNCTION tigger_fun() RETURNS trigger AS $$
declare
  ...
begin
  ...
  insert into tab_x ...;
end;
$$ language plpgsql;

2.创建触发器

下面 procedure 关键字后面指定上一步创建的触发器函数名。

create trigger tab_x_trigger
    AFTER UPDATE OR INSERT OR DELETE on tab_x
	for each row execute procedure tigger_fun();

3.触发器的查看

方式一:使用 gsql 工具连接后,通过表的定义上可以查看

\d+ tab_x

方式二:通过 sql 语句查询 pg_trigger 系统表

select *  from pg_trigger where tgname='tab_x';