IT

PostgreSQL에서 데이터 항목이 자동으로 삭제되는 "만료"시간을 설정하는 방법이 있습니까?

lottoking 2020. 9. 25. 08:16
반응형

PostgreSQL에서 데이터 항목이 자동으로 삭제되는 "만료"시간을 설정하는 방법이 있습니까?


PostgreSQL의 데이터 항목에 "만료"시간을 설정하는 방법이 있습니까? EXPIRERedis 와 동등한 것을 생각하고 있습니다.

타임 스탬프를 저장하고 종료 된 항목을 확인하기 위해 사용 크론 작업을 수동으로 코딩하려는 것이 아닙니다 .

PostgreSQL에 기능을 제공하는 기본 기능을 제공하거나 제공하는 기능을 제공합니다.


기본 기능은 내장되어 있지 않지만, 목표가 필드를 자동으로 종료하고 염기 서열 논리를 포함 할 것입니다. (모든 크론 작업과 같은 외부이 없음)이라면 항상 트리거를 사용할 수 있습니다. 다음은 타임 스탬프가 1 분보다 오래된 테이블에서 행을 삭제하는 트리거의 예입니다. 동일한 테이블에 새 행이 삽입 될 때마다 실행됩니다. 더 이상 사용할 수 있습니다. 이를 위해 다음 웹 사이트를 사용했습니다. http://www.the-art-of-web.com/sql/trigger-delete-old/

CREATE TABLE expire_table (
    timestamp timestamp NOT NULL DEFAULT NOW(),
    name TEXT NOT NULL
);

INSERT INTO expire_table (name) VALUES ('a');
INSERT INTO expire_table (name) VALUES ('b');
INSERT INTO expire_table (name) VALUES ('c');

select * from expire_table;
         timestamp          | name 
----------------------------+------
 2014-09-26 15:33:43.243356 | a
 2014-09-26 15:33:45.222202 | b
 2014-09-26 15:33:47.347131 | c
(3 rows)

CREATE FUNCTION expire_table_delete_old_rows() RETURNS trigger
    LANGUAGE plpgsql
    AS $$
BEGIN
  DELETE FROM expire_table WHERE timestamp < NOW() - INTERVAL '1 minute';
  RETURN NEW;
END;
$$;

CREATE TRIGGER expire_table_delete_old_rows_trigger
    AFTER INSERT ON expire_table
    EXECUTE PROCEDURE expire_table_delete_old_rows();

INSERT INTO expire_table (name) VALUES ('d');

select * from expire_table;
         timestamp          | name 
----------------------------+------
 2014-09-26 15:36:56.132596 | d
(1 row)


아니요. 기능은 없습니다.

나는 그것이 (1) 단지 "만료 된"타임 스탬프가하는 것 또는 (2) 타임 스탬프 + cron-job / pgAgent보다 더 많은 것을 볼 수 없습니다.

코어에 추가되는 일반적인 기능처럼 들리지 않습니다. cron-job 또는 아마도 백그라운드 작업자 프로세스 에서 호출 된 틱을 사용하여 이러한 종류의 작업을 처리 하는 확장아주 간단하게 코딩 할 수 있습니다.

나는 pgxn 에서 아무것도 볼 수 없으므로 아마도 아직 많은 수요가 없었을 것입니다.

참고 URL : https://stackoverflow.com/questions/26046816/is-there-a-way-to-set-an-expiry-time-after-which-a-data-entry-is-automaticall

반응형