now()
함수를 사용하는 시간 종속 뷰가 있으므로 시간 경과에 따라 값이 변경됩니다.보기에서 트리거를 만듭니다.
단순한 코드 :
는DROP VIEW IF EXISTS av;
DROP TABLE IF EXISTS A;
CREATE TABLE A (when_epoch_seconds INTEGER, x VARCHAR);
INSERT INTO A(when_epoch_seconds, x) SELECT CAST (EXTRACT (epoch FROM now()) AS INT), 'x';
CREATE VIEW av AS
WITH cte AS
(SELECT MAX(when_epoch_seconds) AS latestEntry FROM a)
SELECT CAST (EXTRACT (epoch FROM now()) AS INT) - cte.latestEntry > 5 AS too_old FROM cte;
SELECT too_old FROM av;
내 질문은 내가 지속적으로 예를 들어보기 av
과에 열 too_old
의 값을 모니터링하는 트리거를 만들 수있는 방법은 "통지"테이블에 행을 삽입 할 때마다 그 값이 true에서 false로 또는 그 반대로 전환됩니까? 아니면 같은 효과를 내기에 더 적합한 다른 메커니즘이 있습니까?
트리거는 테이블의 DML이 실행될 때만 실행됩니다. "* 지속적으로 모니터 *"하는 방아쇠와 같은 것은 없습니다. 당신은 청취/통지를 찾고 있을지도 모른다. http://www.postgresql.org/docs/current/static/sql-listen.html –
테이블 A에서 INSERT 할 때 어떤 일이 필요하지 않지만 5 초 이상 ** 해당 표에 INSERT가 없습니다 **. PostgreSQL만으로는이를 달성 할 수있는 방법이 없습니다. 매초마다 조건을 검사하는 cron 작업을 실행해야합니다. –