theNotify명령을 보냅니다 이전에 있었던 각 클라이언트 응용 프로그램에 대한 알림 이벤트 실행듣기이름지정된 알림의 경우 현재 데이터베이스의 이름.
Notify간단한 형태를 제공합니다 컬렉션에 대한 신호 또는 전문가 통신 메커니즘 동일하게 액세스하는 프로세스와이즈 토토데이터베이스. 더 높은 수준의 메커니즘 데이터베이스에서 테이블을 사용하여 추가 전달을 통해 구축 할 수 있습니다. Notifier에서 데이터 (단순한 알림 이름을 넘어서) 리스너 (들).
알림 이벤트를 위해 클라이언트에게 전달 된 정보 알림 이름과 알림 세션 서버가 포함되어 있습니다 프로세스PID. 그것은 닿습니다 데이터베이스 디자이너가 될 알림 이름을 정의합니다. 주어진 데이터베이스에 사용 및 각각의 의미.
일반적으로 알림 이름은 이름과 동일합니다. 데이터베이스의 일부 테이블과 본질적으로 알림 이벤트 수단,"이 테이블을 변경했습니다 새로운 것이 무엇인지보기 위해 ". 그러나 그러한 연관성은 시행되지 않습니다 에 의해Notifyand듣기명령. 예를 들어, 데이터베이스 디자이너 여러 다른 알림 이름을 사용하여 신호를 보낼 수 있습니다 단일 테이블에 대한 다른 종류의 변경.
언제Notify특정 테이블 변경, 유용한 프로그래밍 발생 기술은를 넣는 것입니다.Notify규칙적으로 그것은 테이블 업데이트에 의해 트리거됩니다. 이런 식으로 알림 테이블이 변경되면 자동으로 발생합니다 응용 프로그램 프로그래머는 실수로 그렇게하는 것을 잊을 수 없습니다.
NotifySQL과 상호 작용합니다 몇 가지 중요한 방식으로 거래. 첫째, ANotify거래 내부에서 실행됩니다 이벤트 알림 이벤트는 거래가 진행될 때까지 전달되지 않습니다. 커밋되었습니다. 거래가 있다면 이것은 적절합니다 중단되면, 그 내의 모든 명령은를 포함하여 효과가 없었습니다.Notify. 그러나 그것은 당황 할 수 있습니다 하나는 알림 이벤트가 전달 될 것으로 기대하고 있습니다 즉시. 둘째, 청취 세션이 a 알림 신호는 트랜잭션 내에있는 동안 알림 이벤트는 연결된 클라이언트에게 전달되지 않습니다. 거래가 완료된 직후까지 (커밋 또는 중단). 다시 한 번, 추론은 알림이 있다면 나중에 중단 된 거래 내에서 전달되면 어쨌든 알림이 취소되기를 원하지만 서버 할 수 없음"테이크"한 번 알림 클라이언트에게 보냈습니다. 따라서 알림 이벤트는 전용입니다 거래간에 전달. 이것의 상승은 그 것입니다 사용 사용 응용 프로그램Notify실시간 신호는 거래를 짧게 유지하려고 노력해야합니다.
NotifyUNIX 신호처럼 동작합니다 한 가지 중요한 존중 : 동일한 알림 이름이 신호가있는 경우 빠른 연속으로 여러 번 수신자는 하나만 얻을 수 있습니다. 여러 실행에 대한 알림 이벤트Notify. 그래서 받은 알림 수. 대신 사용Notify지불 해야하는 응용 프로그램을 깨우려면 무언가에주의를 기울이고 데이터베이스 개체 (예 : 시퀀스) 무슨 일이 있었는지 또는 몇 번을 추적하기 위해 일어났다.
실행하는 클라이언트에 일반적입니다Notify동일한 알림을 듣고 있습니다 이름 자체. 이 경우 알림 이벤트를 되 찾을 수 있습니다. 다른 모든 청취 세션과 마찬가지로. 에 따라 응용 프로그램 논리, 이것은 쓸모없는 작업을 초래할 수 있습니다 예를 들어, 데이터베이스 테이블을 읽으려면 동일한 업데이트를 찾으십시오. 그 세션은 방금 썼습니다. 그러한 추가를 피할 수 있습니다 세션 알림의 서버 프로세스 여부를 알아 차림으로써 작동PID( 알림 이벤트 메시지)는 자신의 세션과 동일합니다PID(이용 가능libpq). 그들이 동일 할 때 알림 이벤트는 자신의 작업이며 무시하십시오. (이전 단락에서 말한 내용에도 불구하고 이것은 안전한 기술입니다.와이즈 토토자기 개념을 분리합니다 다른 세션에서 도착하는 알림에서 볼 수 없으므로 할 수 없습니다 자신의 것을 무시하여 외부 알림을 놓치십시오 알림.)