【问题标题】:Delete a record from when current timestamp is greater than a fixed timestamp value in existing column当当前时间戳大于现有列中的固定时间戳值时删除记录
【发布时间】:2018-06-16 11:04:19
【问题描述】:

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

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

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

这可以使用 POSTGRESQL 使用一些触发函数来完成吗? 通过nodejs。

【问题讨论】:

    标签: javascript sql node.js postgresql


    【解决方案1】:

    您会想要一个根据时间变化触发的触发器,而这不会发生。你会想要类似pg_cron 的东西来触发基于时间的命令。所以你可以写一个函数,比如:

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

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

    【讨论】:

    • 这意味着安排 cronjob 在指定时间调用函数。是否可以根据 endDate 安排 cronjob ?
    • 真的,您会定期调用该函数(每天一次,每小时一次等)。每当它运行时,它都会查看 enddate 已过的任何行并将其删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多