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();