토토 사이트 추천 — 명령 실행
int 토토 사이트 추천(const char *명령, 부울읽기 전용, 긴개수)
토토 사이트 추천다음에 대해 지정된 SQL 명령을 실행합니다.개수행. 만일읽기 전용is사실, 명령은 읽기 전용이어야 하며 실행 오버헤드가 다소 줄어듭니다.
이 함수는 연결된 C 함수에서만 호출할 수 있습니다.
만약개수가 0이면 적용되는 모든 행에 대해 명령이 실행됩니다. 만일개수0보다 크고 그 이하개수행이 검색됩니다. a를 추가하는 것과 마찬가지로 개수에 도달하면 실행이 중지됩니다.한도절을 쿼리에 추가합니다. 예를 들어,
토토 사이트 추천("SELECT * FROM foo", true, 5);
테이블에서 최대 5개의 행을 검색합니다. 이러한 제한은 명령이 실제로 행을 반환하는 경우에만 유효합니다. 예를 들어,
토토 사이트 추천("INSERT INTO foo SELECT * FROM bar", false, 5);
다음의 모든 행을 삽입합니다.바, 무시개수매개변수. 그러나
토토 사이트 추천("foo에 삽입 SELECT * FROM 바 RETURNING *", false, 5);
다섯 번째 행 이후에는 실행이 중지되므로 최대 5개의 행이 삽입됩니다.돌아오는 중결과 행이 검색되었습니다.
하나의 문자열에 여러 명령을 전달할 수 있습니다.토토 사이트 추천마지막으로 실행한 명령에 대한 결과를 반환합니다.개수제한은 각 명령에 개별적으로 적용됩니다(실제로 마지막 결과만 반환되더라도). 규칙에 의해 생성된 숨겨진 명령에는 제한이 적용되지 않습니다.
언제읽기 전용is거짓, 토토 사이트 추천명령 카운터를 증가시키고 새로운 것을 계산합니다스냅샷문자열의 각 명령을 실행하기 전. 현재 트랜잭션 격리 수준이 다음과 같은 경우 스냅샷은 실제로 변경되지 않습니다.직렬화 가능또는반복 가능한 읽기하지만읽어 커밋됨모드에서는 스냅샷 업데이트를 통해 각 명령이 다른 세션에서 새로 커밋된 트랜잭션의 결과를 볼 수 있습니다. 이는 명령이 데이터베이스를 수정할 때 일관된 동작을 위해 필수적입니다.
언제읽기 전용is참, 토토 사이트 추천스냅샷이나 명령 카운터를 업데이트하지 않으며 일반만 허용합니다.선택명령이 명령 문자열에 나타납니다. 명령은 주변 쿼리에 대해 이전에 설정된 스냅샷을 사용하여 실행됩니다. 이 실행 모드는 명령별 오버헤드를 제거하므로 읽기/쓰기 모드보다 다소 빠릅니다. 또한 진정으로 허용합니다안정적빌드할 함수: 연속적인 실행은 모두 동일한 스냅샷을 사용하므로 결과에는 변화가 없습니다.
SPI를 사용하여 단일 기능 내에서 읽기 전용 및 읽기-쓰기 명령을 혼합하는 것은 일반적으로 현명하지 않습니다. 읽기 전용 쿼리는 읽기-쓰기 쿼리에 의해 수행된 데이터베이스 업데이트 결과를 볼 수 없기 때문에 매우 혼란스러운 동작을 초래할 수 있습니다.
(마지막) 명령이 실행된 실제 행 수가 전역 변수에 반환됩니다.SPI_처리됨. 함수의 반환 값이 다음과 같은 경우SPI_OK_SELECT, SPI_OK_INSERT_RETURNING, SPI_OK_DELETE_RETURNING또는SPI_OK_UPDATE_RETURNING, 그러면 전역 포인터를 사용할 수 있습니다SPITuple테이블 *SPI_tuptable결과 행에 액세스합니다. 일부 유틸리티 명령(예:설명)도 행 세트를 반환하고SPI_tuptable이 경우에도 결과가 포함됩니다. 일부 유틸리티 명령(복사, 다음으로 테이블 생성) 행 세트를 반환하지 않으므로SPI_tuptable은 NULL이지만 여전히 처리된 행 수를 반환합니다.SPI_처리됨.
구조SPITupleTable다음과 같이 정의됩니다.
typedef 구조체
MemoryContext tuptabcxt; /* 결과 테이블의 메모리 컨텍스트 */
uint64가 할당되었습니다. /* 할당된 값의 수 */
uint64 무료; /* 사용 가능한 값의 수 */
TupleDesc tupdesc; /* 행 설명자 */
HeapTuple *vals; /* 행 */
SPITupleTable;
발스는 행에 대한 포인터 배열입니다. (유효한 항목 수는 다음과 같습니다.SPI_processed.) tupdesc행을 처리하는 SPI 함수에 전달할 수 있는 행 설명자입니다.tuptabcxt, 할당됨및무료SPI 호출자가 사용하도록 의도되지 않은 내부 필드입니다.
SPI_finish모두 해제SPITupleTables는 현재 C 함수 중에 할당되었습니다. 작업이 완료되면 다음을 호출하여 특정 결과 테이블을 더 일찍 해제할 수 있습니다.SPI_freetuptable.
상수 문자 *명령실행할 명령이 포함된 문자열
부울읽기 전용참읽기 전용 실행용
긴개수반환할 최대 행 수 또는0제한 없음
명령 실행이 성공하면 다음(음수가 아닌) 값 중 하나가 반환됩니다.
SPI_OK_SELECTif a선택(그러나 아님선택)이 실행되었습니다.
SPI_OK_SELINTOif a선택처형되었습니다
SPI_OK_INSERT만약삽입처형되었습니다
SPI_OK_DELETEif a삭제처형되었습니다
SPI_OK_UPDATE만약업데이트처형되었습니다
SPI_OK_INSERT_RETURNING만일반환 삽입처형되었습니다
SPI_OK_DELETE_RETURNINGif a복귀 삭제처형되었습니다
SPI_OK_UPDATE_RETURNING만일업데이트 반환 중처형되었습니다
SPI_OK_UTILITY유틸리티 명령인 경우(예:테이블 생성)이 실행되었습니다.
SPI_OK_REWRITTEN명령이 다른 종류의 명령으로 다시 작성된 경우(예:업데이트이 되었다삽입) 작성자: aPostgreSQL : 문서 : 11 : 41 장. 토토 꽁 머니 시스템.
오류 발생 시 다음 음수 값 중 하나가 반환됩니다:
SPI_ERROR_ARGUMENTif명령isNULL또는개수0보다 작습니다
SPI_ERROR_COPYifstdout에 복사또는표준 입력에서 복사시도되었습니다
SPI_ERROR_TRANSACTION트랜잭션 조작 명령이 시도된 경우 (시작, 커밋, 롤백, 세이브포인트, 거래 준비, 커밋 준비됨, 롤백 준비됨또는 그 변형)
SPI_ERROR_OPUNKNOWN명령 유형을 알 수 없는 경우(발생하지 않아야 함)
SPI_ERROR_UNCONNECTED연결되지 않은 C 함수에서 호출된 경우
모든 SPI 쿼리 실행 함수는 둘 다 설정SPI_처리됨그리고SPI_tuptable(구조의 내용이 아닌 포인터만). 결과 테이블에 액세스해야 하는 경우 이 두 전역 변수를 로컬 C 함수 변수에 저장하세요.토토 사이트 추천또는 이후 호출에 대한 또 다른 쿼리 실행 함수.