在postgres db中,当将来的列数据带有时间戳满足当前时间时,我们如何获取通知或触发器

问题描述

从UI用户将给我们一些特定的时间(带有时区)以更新设备上的exe版本。 我们将其存储在postgresql db中,作为demandedInstallationTime。

 -------------------------------------------------------------
 | Id | DeviceName | demanded Installation Time | Other data  |
 -------------------------------------------------------------

我不是从Java中每分钟轮询一次,以检查表中是否有任何带有'demandedInstallationTime'的条目,然后调用安装,而是从Postgresql工具开始考虑。 像pg_notify()一样,但是在有表行的插入/更新/删除操作时有效。

还需要安排Cron作业按分钟或每小时等连续24/7运行,这在我们的情况下不可行。

我希望当'demandedInstallationTime'列等于'当前时间'时,一些线程自动通知/触发某些脚本。我们怎样才能做到这一点?有什么建议吗?

解决方法

您可以使用以PL/PerlPL/Python(也可以使用其他语言)编写的触发器,该触发器执行某种外部脚本。当然,您需要仔细考虑执行此操作可能对性能/安全性造成的影响。

或者,您可以编写一个作为守护程序运行并检查更新的脚本(例如,在您感兴趣的表上由触发器编写的队列表中)或侦听通知。如果您真的很喜欢冒险,可以写一个custom background worker,但这对于期望的目的可能会不必要地复杂。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...