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

29.11. 알아채다 처리 중

서버에서 생성된 알림 및 경고 메시지는 쿼리 실행 함수에 의해 반환됩니다. 쿼리 실패를 의미합니다. 대신 통지로 전달됩니다. 함수를 처리하고 실행은 이후에도 정상적으로 계속됩니다. 핸들러가 반환됩니다. 기본 통지 처리 기능은 다음을 인쇄합니다. 메시지 켜짐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.) 동일한 void 포인터 전달됨PQsetNoticeReceiver이다 또한 통과했습니다. (이 포인터를 사용하여 액세스할 수 있습니다. 필요한 경우 애플리케이션별 상태입니다.)

기본 알림 수신자는 단순히 메시지를 추출합니다(사용PQresultErrorMessage) 및 통과 토토 사이트 처리자에게.

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

기본 토토 사이트 프로세서는 간단합니다.

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

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

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