이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 동일한 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 32.13. 스포츠 토토 처리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

28.10. 알아채다 처리

서버에서 생성 한 통지 및 경고 메시지는 쿼리 실행 함수에 의해 반환되었습니다. 쿼리 실패를 암시합니다. 대신 그들은 통지에 전달됩니다 처리 기능 및 실행은 정상적으로 계속됩니다 핸들러 반환. 기본 통지 처리 기능은 다음을 인쇄합니다 메시지Stderr그러나 응용 프로그램 자체 취급을 제공 하여이 동작을 무시할 수 있습니다 기능.

역사적 이유로 두 가지 수준의 토토 베이가 있습니다 토토 베이 수신자 및 토토 베이 프로세서라고하는 처리, 그만큼 기본 동작은 토토 베이 수신자가 토토 베이를 형식화하는 것입니다. 인쇄를 위해 문자열을 토토 베이 프로세서에 전달하십시오. 하지만, 자체 토토 베이 수신자를 제공하기로 선택한 응용 프로그램 일반적으로 토토 베이 프로세서 계층을 무시하고 모든 작업을 수행합니다. 토토 베이 수신자의 작업.

함수PQSETNOTICERECEIVER 현재 통지 수신기를 설정하거나 검사합니다 연결 객체. 비슷하게,pqsetnoticeprocessor 세트 또는 현재 통지 프로세서를 검사합니다.

typedef void ( *pqnoticereceiver) (void *arg, const pgresult *res);

PQNOTICERECEIVER
pqsetnoticereceiver (pgconn *conn,
                    PQNOTICERECEIVER PROC,
                    void *arg);

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

pqnoticeprocessor
pqsetnoticeprocessor (pgconn *conn,
                     pqnoticeprocessor proc,
                     void *arg);

이러한 각 함수는 이전 통지 수신기를 반환합니다 또는 프로세서 함수 포인터 및 새 값을 설정합니다. 당신이 Null 기능 포인터를 제공하면 조치를 취하지 않지만 현재 포인터가 반환됩니다.

서버에서 토토 베이 또는 경고 메시지가 수신되면 또는 내부적으로 생성libpq, 통지 수신자 함수는 다음과 같습니다 라고 불리는. 그것은 a의 형태로 메시지를 전달합니다.pgres_nonfatal_error pgresult. (이것은 수신기가 추출 할 수있게한다 사용 개별 분야pqresulterrorfield또는 완료 를 사용하여 사전 포맷 된 메시지PQRESULTERRORMESSAGE.) 동일한 공극 포인터 전달PQSETNOTICERECEIVERIS 또한 통과했습니다. (이 포인터는 액세스하는 데 사용될 수 있습니다 필요한 경우 응용 프로그램 별 상태.)

기본 토토 베이 수신기는 간단히 메시지를 추출합니다 (사용PQRESULTERRORMESSAGE)와 통과합니다 토토 베이 프로세서에.

토토 베이 프로세서는 토토 베이를 처리하거나 텍스트 형식으로 제공되는 경고 메시지. 문자열 텍스트가 전달됩니다 메시지 (후행 신성 라인 포함)와 공허함 동일한 포인터와 같은 포인터pqsetnoticeprocessor. (이 포인터를 사용할 수 있습니다 필요한 경우 응용 프로그램 별 상태에 액세스하려면.)

기본 토토 베이 프로세서는 간단합니다

정적 무효
defaultNoticeProcessor (void *arg, const char *메시지)

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

일단 통지 수신자 또는 프로세서를 설정하면 그 함수가만큼 오랫동안 호출 될 수있을 것으로 예상합니다.pgconn개체 또는pgresult그로 만든 물체가 존재합니다. ~에 A 생성pgresult, Thepgconn의 현재 통지 처리 포인터는에 복사됩니다.pgresult같은 기능으로 가능한 사용pqgetValue.