定期删除在mysql通过创建存储过程和触发器比较容易,在postgresql中的方式会有些不一样,这里用到的是postgresql的函数(存储过程和触发器)
postgresql函数(存储过程)介绍:https://www.yiibai.com/postgresql/postgresql-functions.html
postgresql触发器介绍:https://www.yiibai.com/postgresql/postgresql-trigger.html
整体思路就是先写个函数(存储过程),再写个触发器来触发,实现自动清理创建事件大于七天的记录功能。
创建函数:
CREATE OR REPLACE FUNCTION auto_del_user ()
RETURNS TRIGGER AS $res$
BEGIN
delete from user where create_time < (now() - interval '7 day');
return NULL;
END;
$res$ LANGUAGE plpgsql;
创建触发器:
CREATE TRIGGER auto_del_user AFTER INSERT ON user
FOR EACH ROW EXECUTE PROCEDURE auto_del_user();
这里的触发策略是在每次插入的时候触发,可以根据自己需求修改策略。
通过触发器触发函数是需要函数有返回值的,如果开始没有返回值是不能修改的,要先删掉函数重新创建,删除函数使用
drop function ...
。