暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第18天|课后练习-触发器

原创 驿路辰风 2021-12-19
404

数据库连接及环境检查

切换用户至omm用户(gaussdb的所有者)

su - omm

gsql连接数据库,并检查当前会话连接信息:

gsql -r \conninfo

查看当前函数

select * from PG_TRIGGER;

图片.png

课后练习

1.创建源表和触发表,在源表上创建insert触发器,创建操作触发表的触发器函数

--源表 create table products_p (product_id integer, product_name char(30), category char(20) ); --触发表 create table pro_number (product_num integer); --pro_number表记录products_p表数据行数 CREATE OR REPLACE FUNCTION TR_INSERT_func() RETURNS TRIGGER AS $$ DECLARE BEGIN truncate table pro_number; INSERT INTO pro_number (select (select count(1) from products_p)+1); RETURN NEW; END $$ LANGUAGE PLPGSQL; --创建插入触发器 CREATE TRIGGER insert_trigger BEFORE insert ON products_p FOR EACH ROW EXECUTE PROCEDURE TR_INSERT_func(); \dS products_p select * from PG_TRIGGER;

图片.png

2.在源表上执行insert操作,查看触发操作是否生效;禁用触发器后,再次查看触发操作是否生效

--源表插入数据 INSERT INTO products_p VALUES (1601,'lamaze','toys'), (1700,'wait interface','Books'), (1502,'olympus camera','electrncs'), (1666,'harry potter','toys'); --检查触发器是否生效 select count(1) from products_p; select * from pro_number; INSERT INTO products_p VALUES (1601,'lamaze','toys'); select count(1) from products_p; select * from pro_number;

图片.png

3.使用系统表PG_TRIGGER和\dS+查看触发器

\dS products_p select * from PG_TRIGGER;

图片.png

4.重命名触发器

ALTER TRIGGER insert_trigger ON products_p RENAME TO insert_trigger_prownum; \dS products_p

图片.png

5.删除触发器

drop TRIGGER insert_trigger_prownum ON products_p; \dS products_p select * from PG_TRIGGER;

图片.png

附:触发器相关官网文档

openGauss 触发器创建
openGauss 触发器修改
openGauss 触发器删除

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论