이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 메이저 토토 사이트버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

토토 캔

이름

NOTIFY  --  토토 캔 생성

시놉시스

토토 캔이름        

입력

토토 캔이름

신호를 받을 조건을 알립니다.

출력

토토 캔

토토 캔 명령이 실행되었음을 확인합니다.

이벤트 토토 캔

이벤트는 수신 프론트엔드에 전달됩니다. 여부 각 프런트엔드 애플리케이션이 어떻게 반응하는지에 따라 다릅니다. 프로그래밍.

설명

토토 캔명령은 토토 캔 이벤트를 보냅니다. 이전에 실행된 각 프런트엔드 애플리케이션에듣기토토 캔이름지정된 토토 캔에 대해 현재 데이터베이스의 조건입니다.

토토 캔 이벤트를 위해 프런트엔드로 전달된 정보 토토 캔 조건 이름과 토토 캔 백엔드가 포함됩니다. 프로세스의 PID. 데이터베이스 디자이너가 정의하는 것은 주어진 데이터베이스에서 사용될 조건 이름과 각각의 의미입니다.

일반적으로 토토 캔 조건 이름은 다음의 이름과 동일합니다. 데이터베이스의 일부 테이블 및 기본적으로 토토 캔 이벤트 의미"나는 이 테이블을 변경했습니다. 한번 보세요 새로운 소식을 확인해보세요.". 그러나 그러한 연관은 시행되지 않습니다. 에 의해토토 캔그리고듣기명령. 예를 들어, 데이터베이스 디자이너 여러 가지 다른 조건 이름을 사용하여 서로 다른 신호를 보낼 수 있습니다. 단일 테이블에 대한 일종의 변경 사항입니다.

토토 캔간단한 형태의 신호 제공 또는 IPC(프로세스 간 통신) 메커니즘 동일한 액세스 프로세스PostgreSQL데이터베이스. 더 높은 수준의 메커니즘 추가 전달을 위해 데이터베이스의 테이블을 사용하여 구축할 수 있습니다. 토토 캔자에서 데이터(단순한 조건 이름 이상의) 청취자.

언제토토 캔신호를 보내는 데 사용됩니다. 특정 테이블에 대한 변경 발생, 유용한 프로그래밍 기술은 다음을 넣는 것입니다.토토 캔규칙에서 이는 테이블 업데이트에 의해 트리거됩니다. 이로써 토토 캔 테이블이 변경되면 자동으로 발생하며 애플리케이션 프로그래머가 실수로 이를 잊어버릴 수는 없습니다.

토토 캔SQL 트랜잭션과 상호작용 몇 가지 중요한 방법으로. 첫째, 만일 a토토 캔트랜잭션 내에서 실행되며 토토 캔 이벤트는 거래가 완료될 때까지 전달되지 않습니다. 헌신했다. 거래가 다음과 같으므로 이는 적절합니다. 중단되었습니다. 우리는 그 안의 모든 명령이 중단되었으면 좋겠습니다. 효과, 포함토토 캔. 하지만 그럴 수도 있지 토토 캔 이벤트가 예상된다면 당황 스럽습니다. 즉시 배송됩니다. 둘째, 청취 백엔드가 수신하는 경우 트랜잭션 내에 있는 동안 토토 캔 신호, 토토 캔 이벤트는 연결될 때까지 연결된 프런트엔드로 전달되지 않습니다. 트랜잭션이 완료된 후(커밋되거나 중단됨) 다시 말하지만, 그 이유는 통지가 일정 기간 내에 전달된 경우입니다. 나중에 중단된 거래인 경우 어떻게든 취소하라는 토토 캔---그러나 백엔드는 그럴 수 없습니다."철회"토토 캔이 전송되면 토토 캔 프론트엔드에 전달합니다. 따라서 토토 캔 이벤트는 다음 사이에만 전달됩니다. 거래. 결과적으로 다음을 사용하는 애플리케이션은토토 캔실시간 신호를 보내려면 다음을 시도해야 합니다. 거래를 짧게 유지하기 위해.

토토 캔하나의 Unix 신호처럼 작동합니다. 중요사항: 동일한 조건명이 시그널링되는 경우 빠르게 연속해서 여러 번 수신자는 하나만 받을 수 있습니다. 여러 실행에 대한 이벤트 토토 캔토토 캔. 그러니 숫자에만 의존하는 것은 좋지 않습니다. 수신된 토토 캔의 수입니다. 대신에 다음을 사용하세요.토토 캔무언가에 주의를 기울여야 하는 애플리케이션을 깨우기 위해, 그리고 데이터베이스 개체(예: 시퀀스)를 사용하여 추적합니다. 무슨 일이 일어났는지, 몇 번이나 일어났는지.

전송하는 프런트엔드에서 일반적입니다토토 캔동일한 토토 캔 이름을 듣고 있습니다 그 자체. 이 경우 다음과 같이 토토 캔 이벤트가 반환됩니다. 다른 모든 청취 프론트엔드. 응용 프로그램에 따라 논리상 이것은 쓸모없는 작업을 초래할 수 있습니다. 예를 들어, 동일한 업데이트를 찾기 위해 데이터베이스 테이블을 다시 읽습니다. 프론트엔드가 방금 작성되었습니다. 에서PostgreSQL6.4 이상에서는 다음이 가능합니다. 토토 캔 백엔드가 있는지 확인하여 이러한 추가 작업을 피하세요. 프로세스의 PID(토토 캔 이벤트 메시지에 제공됨)가 동일합니다. 자신의 백엔드 PID로 사용합니다(libpq에서 사용 가능). 그들이 있을 때 마찬가지로 토토 캔 이벤트는 자신의 작업이 다시 되돌아오는 것입니다. 무시할 수 있습니다. (앞서 말한 내용에도 불구하고 단락, 이것은 안전한 기술입니다.PostgreSQL자체 토토 캔을 다음과 별도로 유지합니다. 다른 백엔드에서 도착했음을 알리므로 놓칠 수 없습니다. 자신의 토토 캔을 무시하여 외부에 토토 캔을 보냅니다.)

참고

이름어떤 문자열이든 유효할 수 있습니다. 이름으로; 실제 이름과 일치할 필요는 없습니다. 테이블. 만일이름다음에 포함되어 있습니다. 큰따옴표를 사용하면 구문적으로 유효한 이름일 필요도 없습니다. 최대 31자 길이의 문자열일 수 있습니다.

일부 이전 릴리스에서PostgreSQL, 이름큰따옴표로 묶어야 했습니다. 기존 테이블 이름과 일치하지 않는 경우에도 구문상 이름으로 유효합니다. 더 이상 필요하지 않습니다.

PostgreSQL출시 6.4 이전에는 토토 캔 메시지로 전달된 백엔드 PID가 항상 프런트엔드 자체 백엔드의 PID입니다. 그래서 그렇지 않았어 자신의 토토 캔을 다른 클라이언트의 토토 캔과 구별하는 것이 가능합니다. 이전 릴리스에서 알립니다.

사용법

다음에서 수신/토토 캔 시퀀스 구성 및 실행psql:

가상 듣기;
가상으로 토토 캔;
pid '8448'이 있는 백엔드의 비동기 NOTIFY '가상'이 수신되었습니다.

호환성

SQL92

없습니다토토 캔문의 내용SQL92.