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

32.12. 토토 커뮤니티 처리

서버에서 생성된 알림 및 경고 메시지는 쿼리 실패를 의미하지 않으므로 쿼리 실행 함수에 의해 반환되지 않습니다. 대신 알림 처리 함수에 전달되고, 처리기가 반환된 후에도 정상적으로 실행이 계속됩니다. 기본 토토 커뮤니티 처리 기능은 메시지를 인쇄합니다.stderr, 그러나 애플리케이션은 자체 처리 기능을 제공하여 이 동작을 재정의할 수 있습니다.

역사적인 이유로 토토 커뮤니티 처리에는 토토 커뮤니티 수신자와 토토 커뮤니티 처리자라는 두 가지 수준이 있습니다. 기본 동작은 알림 수신자가 알림 형식을 지정하고 인쇄를 위해 문자열을 알림 프로세서에 전달하는 것입니다. 그러나 자체 알림 수신기를 제공하기로 선택한 애플리케이션은 일반적으로 알림 프로세서 계층을 무시하고 알림 수신기에서 모든 작업을 수행합니다.

함수PQsetNoticeReceiver연결 개체에 대한 현재 알림 수신자를 설정하거나 검사합니다. 마찬가지로,PQsetNoticeProcessor현재 통지 프로세서를 설정하거나 검사합니다.

typedef void (*PQnoticeReceiver) (void *arg, const PGresult *res);

PQnotice수신기
PQsetNoticeReceiver(PGconn *conn,
                    PQnoticeReceiver 프로세스,
                    무효 *arg);

typedef void (*PQnoticeProcessor) (void *arg, const char *message);

PQnotice프로세서
PQsetNoticeProcessor(PGconn *conn,
                     PQnoticeProcessor 프로세스,
                     무효 *arg);

이러한 함수 각각은 이전 알림 수신자 또는 프로세서 함수 포인터를 반환하고 새 값을 설정합니다. null 함수 포인터를 제공하면 아무 작업도 수행되지 않지만 현재 포인터가 반환됩니다.

서버로부터 알림 또는 경고 메시지가 수신되거나 내부적으로 생성된 경우libpq, 알림 수신 함수가 호출됩니다. a 형식으로 메시지가 전달됩니다.PGRES_NONFATAL_ERROR PGresult. (이를 통해 수신자는 다음을 사용하여 개별 필드를 추출할 수 있습니다.PQresultErrorField또는 다음을 사용하여 미리 형식화된 완전한 메시지를 얻습니다.PQresultErrorMessage또는PQresultVerboseErrorMessage.) 동일한 void 포인터가 전달되었습니다.PQsetNoticeReceiver또한 전달되었습니다. (이 포인터는 필요한 경우 애플리케이션별 상태에 액세스하는 데 사용될 수 있습니다.)

기본 알림 수신자는 단순히 메시지를 추출합니다(사용PQresultErrorMessage) 이를 토토 커뮤니티 프로세서에 전달합니다.

통지 처리자는 텍스트 형식으로 제공된 통지 또는 경고 메시지를 처리할 책임이 있습니다. 메시지의 문자열 텍스트(후행 개행 포함)와 전달된 것과 동일한 void 포인터가 전달됩니다.PQsetNoticeProcessor. (이 포인터는 필요한 경우 애플리케이션별 상태에 액세스하는 데 사용될 수 있습니다.)

기본 알림 프로세서는 간단합니다:

정적 공허
defaultNoticeProcessor(void *arg, const char *message)

    fprintf(stderr, "%s", 메시지);

통지 수신자 또는 프로세서를 설정한 후에는 해당 함수가 다음 중 하나에 해당하는 한 호출될 수 있다고 예상해야 합니다.PGconn객체 또는PGresult그것으로 만들어진 개체가 존재합니다. a 생성 시PGresult, 그PGconn의 현재 통지 처리 포인터는PGresult다음과 같은 기능에서 사용 가능PQgetvalue.