0
我在存儲庫中存儲了由調度程序生成的一些PDF導出。 36小時後,我需要刪除這些PDF文件。使用觸發器在postgres中插入後36小時刪除記錄
表1
ID(表2的PK),FILE_TYPE,數據
表2
ID,名稱,標籤,CREATED_DATE,updated_date
現在我怎麼能寫一個觸發器,它可以刪除記錄表1和表2 36小時後。
我寫了這個,但它只在插入完成時執行。即使沒有偶發事件發生,我也希望它能夠運行。
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();
您將有較少的問題與刪除舊的條目,而不是插入的觸發器每小時批處理作業。使用觸發器,如果沒有插入,數據庫不會得到所需的維護,並且如果由於任何原因刪除失敗,則插入將失敗(如果不處理異常)或顯着減慢。 –