从当前时间戳大于现有列中的固定时间戳值时删除记录

时间:2018-06-15 16:06:06

标签: javascript sql node.js postgresql

我有一个表Coupons,其列endDate数据类型为timestamp,没有时区。如果我将该列的值设置为 06/16/2018 12:45:00 + 5:30 。当当前时间戳大于 endDate

时,是否有任何方式可以自动删除包含此时间戳的记录

可以自动执行的delete from Coupons where endDate < NOW()查询。

可以使用POSTGRESQL使用一些触发功能吗? 通过nodejs。

1 个答案:

答案 0 :(得分:0)

你会想要一个基于时间变化而触发的触发器,这种情况不会发生。你需要pg_cron之类的东西来激发基于时间的命令。所以你可以编写一个函数,如:

CREATE FUNCTION expire_coupons() RETURNS void AS $$
   DELETE FROM coupons WHERE enddate < now();
$$ LANGUAGE SQL;

然后让你的pg_cron作业甚至是crontab中的外部脚本调用SELECT expire_coupons();。或者只是运行删除本身,因为它不是很复杂。