繁体   English   中英

使用触发器在 postgres 中插入 36 小时后删除记录

[英]Delete record 36 hours after insert in postgres using Triggers

我在存储库中存储了一些由调度程序生成的 PDF 导出。 36 小时后,我需要删除那些 PDF。

表格1
id(table2 的pk),file_type,数据

表2
id、名称、标签、created_date、updated_date

现在我该如何编写一个触发器,它可以在 36 小时后删除Table1Table2中的记录。

我已经写了这个,但它只有在插入完成时才会执行。 即使没有发生任何事件,我也希望它运行。

CREATE OR REPLACE FUNCTION ContentResource_Delete() RETURNS trigger AS $ContentResource_Delete$

BEGIN
    delete from jicontentresource jicr USING  jiresource jir 
    where jicr.id = jir.id and jicr.file_type='pdf' and trunc(EXTRACT(EPOCH FROM now() - creation_date)/3600) >=1 ;
    delete from jiresource where name like '%.pdf' and trunc(EXTRACT(EPOCH FROM now() - creation_date)/3600) >=1 ;   
    RETURN NULL;
END;$ContentResource_Delete$ LANGUAGE plpgsql;

CREATE TRIGGER ContentResource_Delete AFTER INSERT ON jiresource FOR EACH ROW EXECUTE PROCEDURE ContentResource_Delete();

大家好,我得到了解决方案,而不是使用我使用 pgAgent 并配置的触发器。
如果除默认数据库(即 postgres)之外的任何人在调度时遇到问题,那么在该步骤中, ConnectionType应该是Remote ,连接字符串应该是IP Address而不是localhost ,指定密码并提供databasename 参考图片

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM