【发布时间】:2020-11-18 20:32:04
【问题描述】:
我正在开发一个网关应用程序,并且我正在使用 PostgreSQL 来存储接收到的数据,然后再转发它们。 为了避免磁盘饱和,我想删除所有超过某个时间的元组(此时我正在考虑 30 或 60 天)。
为了实现这一点,目前,我编写了一个触发器,在某个表中的每个 INSERT 语句之后,删除所有早于这个特定时间量的条目(您可以在下面找到它)。它似乎有效,但我有点害怕约会率更高会发生什么。
DROP TRIGGER IF EXISTS delete_old_measures
ON my_table_1;
CREATE OR REPLACE FUNCTION dropOldMeasures() RETURNS TRIGGER AS $$
BEGIN
DELETE FROM my_table_1 WHERE sqltime < now()-'30 day'::interval;
RETURN NULL;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER delete_old_measures
AFTER INSERT
ON my_table_1
FOR EACH ROW EXECUTE PROCEDURE dropOldMeasures();
我的问题是:有没有更聪明的方法可以自动从数据库中删除旧元组?
【问题讨论】:
标签: sql postgresql automation triggers sql-delete