延迟触发执行

Tan*_*ish 5 postgresql trigger

在问这个问题之前,让我先解释一下场景。

我有一个包含一组表的数据库。一个表,比如表 A,包含用户名详细信息,而另一个表,比如表 B,包含用户活动日志。当从表 A 中删除特定用户条目时,我想从表 B 中删除特定用户日志。我可以使用触发器来执行此操作,但要求在某个时间后(例如 5 分钟后)应删除表 B 中的条目),而不是立即。

是否可以将触发器执行延迟 5 分钟?触发器的可能设计是什么。在这种情况下,延迟触发是否会有所帮助。

Cra*_*ger 6

不,延迟触发器执行无济于事。它只将触发器推迟到事务结束。

PostgreSQL 也没有内置的任务/作业调度程序,因此您需要在您的应用程序中执行此操作。

在触发器中,向表中插入一行,以跟踪应删除哪些条目以及何时删除。每隔几分钟扫描一次该表,并在单个事务中扫描已过期的记录及其在删除队列表中的相应条目。