0
点赞
收藏
分享

微信扫一扫

PG 触发器示例以及与之相关的常用变量

小黑Neo 2022-07-13 阅读 74


文章目录

  • ​​数据​​
  • ​​实例演示​​

数据

drop table if exists test cascade;
CREATE TABLE test (
id serial,
info text,
create_time timestamptz
);



CREATE OR REPLACE FUNCTION func_show_trigger_info ()
RETURNS trigger AS
$$
DECLARE
BEGIN
RAISE NOTICE 'NEW: %', NEW;
RAISE NOTICE 'TG_RELID: %', TG_RELID;
RAISE NOTICE 'TG_TABLE_SCHEMA: %', TG_TABLE_SCHEMA;
RAISE NOTICE 'TG_TABLE_NAME: %', TG_TABLE_NAME;
RAISE NOTICE 'TG_RELNAME: %', TG_RELNAME;
RAISE NOTICE 'TG_OP: %', TG_OP;
RAISE NOTICE 'TG_WHEN: %', TG_WHEN;
RAISE NOTICE 'TG_LEVEL: %', TG_LEVEL;
RAISE NOTICE 'TG_NARGS: %', TG_NARGS;
RAISE NOTICE 'TG_ARGV: %', TG_ARGV;
RAISE NOTICE ' TG_ARGV[0]: %', TG_ARGV[0];
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';


CREATE TRIGGER trig_test
BEFORE INSERT ON test
FOR EACH ROW EXECUTE PROCEDURE func_show_trigger_info('arg1','arg2');

INSERT INTO test (info,create_time)
VALUES ('info','2022-01-01 01:01:01');

实例演示

postgres=# INSERT INTO test (info,create_time)
postgres-# VALUES ('info','2022-01-01 01:01:01');
NOTICE: NEW: (1,info,"2022-01-01 01:01:01+00")
NOTICE: TG_RELID: 16405
NOTICE: TG_TABLE_SCHEMA: public
NOTICE: TG_TABLE_NAME: test
NOTICE: TG_RELNAME: test
NOTICE: TG_OP: INSERT
NOTICE: TG_WHEN: BEFORE
NOTICE: TG_LEVEL: ROW
NOTICE: TG_NARGS: 2
NOTICE: TG_ARGV: [0:1]={arg1,arg2}
NOTICE: TG_ARGV[0]: arg1


举报

相关推荐

0 条评论