簡體   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