이 섹션에서 작동하는 기능을 설명합니다배트맨 토토 개체, 배트맨 토토 생성기라고도합니다 또는 배트맨 토토 만. 배트맨 토토 객체는 특별한 단일 열 테이블입니다 로 생성PostgreSQL : 문서 : 9.1 : 롤 토토 작성. 배트맨 토토 객체는 일반적으로 생성하는 데 사용됩니다 테이블 행의 고유 식별자. 배트맨 토토 기능, 에 나열됨테이블 9-40, 획득하기위한 간단하고 멀티 우스터-안전 방법을 제공합니다 배트맨 토토 객체의 연속 배트맨 토토 값.
표 9-40. 배트맨 토토 기능
기능 | 반환 유형 | 설명 |
---|---|---|
currval (regclass) |
bigint | 가장 최근에 얻은 반환 값NextVal 지정된 배트맨 토토 |
LastVal () |
bigint | 가장 최근에 얻은 반환 값NextVal 모든 배트맨 토토의 경우 |
NextVal (Regclass) |
bigint | 사전 배트맨 토토 및 새로운 가치를 반환 |
setVal (Regclass,
bigint) |
bigint | 배트맨 토토의 현재 값 설정 |
setVal (Regclass,
bigint, 부울) |
bigint | 배트맨 토토의 현재 값을 설정하고IS_CALLED플래그 |
배트맨 토토 함수에 의해 작동 할 배트맨 토토는 다음과 같습니다. A에 의해 지정RegClass인수입니다 단순히의 배트맨 토토의 OIDpg_class시스템 카탈로그. 당신은 그럴 필요가 없습니다 그러나 이후로 Oid를 직접 찾아보세요.RegClass데이터 유형의 입력 변환기가 작업을 수행합니다 당신을 위한. 단일 따옴표로 동봉 된 배트맨 토토 이름을 작성하십시오 문자 그대로 상수처럼 보입니다. 호환성 평범한 취급SQL이름, 문자열이 소문자로 변환됩니다. 배트맨 토토 이름 주위에 이중 인용문이 포함되어 있습니다. 따라서:
NextVal ( 'foo')배트맨 토토에서 작동fooNextVal ( 'foo')배트맨 토토에서 작동fooNextVal ( ' "foo"')배트맨 토토에서 작동foo
필요한 경우 배트맨 토토 이름을 스키마 자격으로 사용할 수 있습니다.
NextVal ( 'myschema.foo')운영myschema.fooNextVal ( ' "myschema".foo')위와 동일NextVal ( 'foo')검색 경로 검색foo
참조섹션 8.16더 많은 경우 에 대한 정보Regclass.
참고 :전PostgreSQL8.1, 인수 시퀀스 기능은 유형입니다.텍스트, 아니다Regclass및 위에서 설명한 것 텍스트 문자열에서 OID 값으로 변환하면 각 통화 중에 시간을 달성하십시오. 후진 호환성을 위해서는이입니다 시설은 여전히 존재하지만 내부적으로는 이제 의 암묵적 강요텍스트toRegclass함수가 있기 전에 호출.
시퀀스 기능의 인수를 불안정한 문자열, 그것은 유형의 상수가됩니다Regclass. 이것은 정말로 단지 단지이기 때문입니다 OID는 원래 식별 된 배트맨 토토에도 불구하고 추적합니다 나중에 변경, 스키마 재 할당 등. this"초기 바인딩"행동이 일반적으로 바람직합니다 열 기본값 및보기에서 시퀀스 참조. 하지만 때때로 당신은 원할 수도 있습니다"늦게 제본"서열 참조가 해결되는 곳 런타임. 늦은 바인딩 행동을 얻으려면 상수를 강요하십시오 A로 저장텍스트대신 상수Regclass:
NextVal ( 'foo':: text)foo런타임을 찾아 보았습니다늦은 바인딩이 지원되는 유일한 행동이었다.PostgreSQL전에 릴리스 8.1, 따라서 의미론을 보존하기 위해이 작업을 수행해야 할 수도 있습니다. 오래된 응용 프로그램의.
물론 시퀀스 함수의 인수는 일정뿐만 아니라 표현. 텍스트 표현식 인 경우 그러면 암시 적 강요는 런타임을 초래합니다 조회.
가용 순서 함수는 다음과 같습니다.
NextVal
배트맨 토토 개체를 다음 값으로 전진시키고 반환
그 가치. 이것은 원자 적으로 완료됩니다
세션 실행NextVal
동시에, 각각은 별개의 배트맨 토토를 안전하게받습니다
값.
기본값으로 배트맨 토토 객체가 생성 된 경우
매개 변수, 연속NextVal
통화는 연속 반환됩니다
1로 시작하는 값. 다른 행동은
에서 특수 매개 변수 사용배트맨 토토 만들기명령; 보다
자세한 내용은 명령 참조 페이지입니다.
중요 :동시 차단을 피하기 위해 동일한 숫자를 얻는 거래 배트맨 토토, A
NextVal
작동은 결코 롤백되지 않습니다. 즉, 한 번 값입니다 가져 왔습니다. 를 한 거래NextVal
나중에 중단. 이것은 그것을 의미합니다 중단 된 거래는 사용하지 않을 수 있습니다"구멍"지정된 순서로 값.
Currval
가장 최근에 얻은 값을 반환NextVal
전류 의이 순서에 대해
세션. (오류가보고 된 경우NextVal
이것을 요구 한 적이 없습니다
이 세션의 순서.) 이것은 a
세션-로컬 값은 예측 가능한 답변을 제공합니다
다른 세션이 실행되지 않았습니다NextVal
현재 세션 이후
했다.
LastVal
가장 최근에 반환 된 값을 반환NextVal
현재 세션에서. 이것
함수는 동일합니다Currval
인수로서의 배트맨 토토 이름은
에 사용 된 마지막 순서NextVal
현재 세션에서. 그것은
전화 오류lastval
ifNextVal
아직 없었습니다
현재 세션에서 호출.
setVal
배트맨 토토 객체의 카운터 값을 재설정합니다. 그만큼
2 개의 파라미터 양식이 배트맨 토토를 설정합니다last_value지정된 값에 대한 필드 및
설정is_calledField totrue, 다음을 의미NextVal
값을 반환하기 전에 배트맨 토토.Currval
지정된 값. 3 개의 가라미터 형태로is_called둘 중 하나로 설정할 수 있습니다true또는거짓.
true2 파라미터 형태. 로 설정된 경우거짓, 다음NextVal
지정된 것을 정확하게 반환합니다
가치와 배트맨 토토 진보는
수행원NextVal
.
또한,Currval
이 경우에는 변경되지 않았습니다 (이것은
8.3 이전의 행동에서의 변화입니다). 예를 들어,
SELECT SETVAL ( 'foo', 42);다음NextVal
43SELECT SETVAL ( 'foo', 42, true);위와 동일SELECT SETVAL ( 'foo', 42, false);다음NextVal
42 복귀합니다.
결과는setVal
는 두 번째의 가치입니다
논쟁.
중요 :배트맨 토토이기 때문에 비 트랜잭션, 변경 사항
setVal
트랜잭션이 롤백됩니다.