이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 9.17. 스포츠 토토 핫 베트맨 조작 기능버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

9.16. 토토 핫 조작 기능

이 섹션에서 작동 함수를 설명합니다토토 핫 개체, 토토 핫 생성기 또는 단지 토토 핫라고도합니다. 토토 핫 객체는로 만든 특수 단일 열 테이블입니다.PostgreSQL : 문서 : 9.5 : 배트맨 토토 작성. 토토 핫 객체는 일반적으로 테이블 행에 고유 식별자를 생성하는 데 사용됩니다. 나열된 토토 핫 함수표 9-44, 토토 핫 객체에서 연속적인 토토 핫 값을 얻기위한 간단하고 멀티 우스터-안전 방법을 제공합니다.

표 9-44. 토토 핫 기능

기능 반환 유형 설명
currval (Regclass) bigint 가장 최근에 얻은 반환 값NextVal지정된 토토 핫
lastVal () bigint 가장 최근에 얻은 반환 값NextVal모든 토토 핫의 경우
NextVal (RegClass) bigint 사전 토토 핫 및 새로운 가치를 반환
setVal (12523_12533, bigint) bigint 토토 핫의 현재 값 설정
setVal (RegClass, bigint, 부울) bigint Set sequence's current value andIS_CALLED플래그

토토 핫 함수에 의해 작동 할 토토 핫는 a에 의해 지정됩니다.RegClass인수, 이것은 단순히 토토 핫의 OID입니다PG_CLASS시스템 카탈로그. 그러나 이후로 Oid를 직접 찾을 필요는 없습니다.RegclassData Type의 입력 변환기가 귀하를 위해 작업을 수행합니다. 문자 그대로 상수처럼 보이도록 단일 따옴표로 둘러싸인 토토 핫 이름을 작성하십시오. 평범한 취급과 호환성SQL이름은 토토 핫 이름 주위에 이중 인용문이 포함되어 있지 않으면 문자열이 소문자로 변환됩니다. 따라서:

NextVal ( 'foo')토토 핫에서 작동fooNextVal ( 'foo')토토 핫에서 작동fooNextVal ( ' "foo"')토토 핫에서 작동foo

필요한 경우 토토 핫 이름을 스키마 자격으로 사용할 수 있습니다.

NextVal ( 'myschema.foo')운영myschema.fooNextVal ( ' "MySchema".foo')위와 동일NextVal ( 'foo')검색 경로 검색foo

참조섹션 8.18자세한 내용은Regclass.

참고 :PostgreSQL8.1, 토토 핫 함수의 인수는 유형이었다텍스트, 아님regclass및 위에서 설명한 텍스트 문자열에서 OID 값으로의 전환은 각 호출 중 실행 시간에 발생합니다. 뒤로 호환성을 위해이 시설은 여전히 ​​존재하지만 내부적으로는 이제의 암묵적 강요로 처리됩니다.텍스트toRegclass함수가 호출되기 전에.

토토 핫 함수의 인수를 끊임없는 문자열로 작성하면 유형의 상수가됩니다Regclass. 이것은 실제로 OID 일 뿐이므로 나중에 이름을 변경, 스키마 재 할당 등에도 불구하고 원래 식별 된 토토 핫를 추적합니다."초기 바인딩"행동은 일반적으로 열 기본 및보기에서 토토 핫 참조에 바람직합니다. 하지만 때로는 원할 수도 있습니다"늦은 바인딩"토토 핫 참조가 실행 시간에 해결되는 곳. 늦은 바인딩 행동을 얻으려면 상수가 A로 저장되도록 강제로텍스트대신 상수RegClass:

NextVal ( 'foo':: text)foo런타임을 찾아 보았습니다

늦은 바인딩이 지원되는 유일한 행동 이었다는 점에 유의하십시오PostgreSQL8.1 이전에 출시되므로 오래된 응용 프로그램의 의미를 보존하려면이 작업을 수행해야 할 수도 있습니다.

물론, 토토 핫 함수의 인수는 상수뿐만 아니라 표현 일 수 있습니다. 텍스트 표현식 인 경우 암시 적 강요는 런타임 조회를 초래합니다.

가용 순서 함수는 다음과 같습니다.

NextVal

토토 핫 객체를 다음 값으로 전진시키고 해당 값을 반환하십시오. 이것은 원자 적으로 완료됩니다 : 여러 세션이 실행 되더라도NextVal동시에, 각각은 별개의 토토 핫 값을 안전하게받을 것입니다.

기본 매개 변수로 토토 핫 객체가 생성 된 경우 연속NextVal통화는 1로 시작하는 연속적인 값을 반환합니다. 다른 동작은에서 특수 매개 변수를 사용하여 얻을 수 있습니다PostgreSQL : 문서 : 9.5 : 배트맨 토토 작성명령; 자세한 내용은 명령 참조 페이지를 참조하십시오.

중요 :동일한 토토 핫에서 숫자를 얻는 동시 트랜잭션 차단을 피하기 위해 ANextVal작동은 결코 롤백되지 않습니다. 즉, 값이 가져 오면 사용 된 것으로 간주되며 다시 반환되지 않습니다. 주변 거래가 나중에 중단되거나 호출 쿼리가 값을 사용하지 않는 경우에도 마찬가지입니다. 예를 들어삽입with충돌조항은 필요한 모든 작업을 포함하여 삽입 된 튜플을 계산합니다NextVal전화를 걸어, 충돌을 감지하기 전에충돌대신 규칙. 그러한 경우는 사용하지 않을 것입니다"구멍"지정된 값의 순서로. 따라서,PostgreSQL토토 핫 개체획득하는 데 사용될 수 없습니다"Gapless"토토 핫.

Currval

가장 최근에 얻은 값을 반환NextVal현재 세션 에서이 토토 핫의 경우. (오류가보고 된 경우NextVal이 세션 에서이 토토 핫를 요구 한 적이 없습니다.) 이것은 세션-로컬 값을 반환하기 때문에 다른 세션이 실행되었는지 여부를 예측 가능한 답변을 제공합니다NextVal현재 세션이 이래.

LastVal

가장 최근에 반환 된 값을 반환NextVal현재 세션에서. 이 기능은 동일합니다Currval- 토토 핫 이름을 인수로 취하는 대신, 그것은 어느 토토 핫를 말하는지NextVal가장 최근에 현재 세션에서 신청했습니다. 전화하는 것은 오류입니다LastValifNextVal현재 세션에서 아직 호출되지 않았습니다.

setVal

토토 핫 객체의 카운터 값을 재설정합니다. 2 파라미터 양식은 토토 핫의를 설정합니다.last_valuefield to the specified value and sets itsIS_CALLEDField totrue, 다음을 의미합니다NextVal값을 반환하기 전에 토토 핫를 진행합니다.Currval지정된 값으로 설정되어 있습니다. 3 개의 가라미터 형태로is_calledTrue또는거짓. true2 파라미터 양식과 동일한 효과가 있습니다. 로 설정된 경우거짓, 다음NextVal지정된 값을 정확하게 반환하고 토토 핫 발전이 다음과 함께 시작됩니다NextVal. 또한,currval20210_20254

SELECT SETVAL ( 'foo', 42);다음NextVal43SELECT SETVAL ( 'foo', 42, true);위와 동일SELECT SETVAL ( 'foo', 42, false);다음NextVal42 복귀합니다.

결과는setVal| 두 번째 인수의 가치 일뿐입니다.

중요 :토토 핫가 ​​비 트랜잭션이기 때문에 변화가 이루어집니다.setVal거래가 롤백되면 취소되지 않습니다.