过滤关键字,在表TABLE_A 插入前,建立触发器,使用游标过滤关键字。postgresql

来源:互联网 发布:淘宝二手雅马哈能买吗 编辑:程序博客网 时间:2024/05/05 14:11
1.创建函数-gl_fun()过滤-使用游标

CREATE OR REPLACE FUNCTION gl_fun(refcursor, msgcontent character varying)
RETURNS character varying AS
$BODY$
DECLARE Msg varchar(50); --定义变量
begin
--定义游标 打开游标 ;
open $1 FOR SELECT 字段A FROM 表名1 ; --查出需要的集合放到游标中 --打开游标
FETCH NEXT FROM $1 INTO Msg;
while found loop
msgcontent = replace(msgcontent,Msg,'');---将内容msgcontent 中,包含有关键字MSG 的替换为空
FETCH NEXT FROM $1 INTO Msg; --读取下一行数据
END loop;
close $1;--关闭游标
return msgcontent;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION gl_fun(refcursor, character varying)
OWNER TO postgres;

2.-创建触发器函数,并给表创建触发器
CREATE OR REPLACE FUNCTION A_insert_trigger_fun()
RETURNS trigger AS
$BODY$
BEGIN
NEW.msgcontent := gl_fun('abc',NEW.msgcontent); ---调用刚才的过滤的方法
RETURN NEW; ---返回更新后的数据。
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION A_insert_trigger_fun()
OWNER TO postgres;
---给表TABLE_A 关联上触发器
CREATE TRIGGER A_before_insert_trigger
BEFORE INSERT
ON TABLE_A
FOR EACH ROW
EXECUTE PROCEDURE A_insert_trigger_fun();

0 0
原创粉丝点击