2012-12-13 2 views
0

트리거와 HTTP GET 또는 POST를 사용하여 Postgres 테이블에 삽입이 발생할 때마다 일부 HTTP 서비스에 ping을 수행해야합니까?Postgres 트리거가 HTTP 연결을 엽니 다.

표준 PostgreSQL 설치로이를 달성 할 수있는 간단한 방법이 있습니까?

경우에 따라 추가 라이브러리를 사용할 수 있습니까?

답변

2

PL/perlu 또는 PL/pythonu로이를 수행 할 수 있습니다. 그러나, 나는 이렇게하지 않는 것이 좋습니다. DNS 문제, 서버 문제 등으로 인해 PostgreSQL 백엔드가 멈추고 데이터베이스 성능이 심각하게 손상되어 max_connections가 초과 될 수 있습니다.

변경 사항이 발생할 때 트리거가 NOTIFY을 보내고 트리거가 로그 테이블에 세부 사항을 삽입하게하십시오. 통지를 위해 클라이언트 응용 프로그램 LISTEN을 가지 고, 트리거에 의해 삽입 된 레코드를 로그 테이블에 읽고 적절한 HTTP 요청을 작성하십시오.

클라이언트는 요청이 성공적으로 이루어질 때 SELECT ... FOR UPDATEDELETE을 사용하여 로그 테이블에서 하나씩 요청을 받아야합니다.

자세한 내용은 this answer about sending email from within the DB을 참조하십시오.

관련 문제