이 섹션에서는 설명합니다.포스트그레SQL의 작동 기능젠 토토 객체. 젠 토토 객체(또한 젠 토토 생성기 또는 그냥 시퀀스라고 함)는 특별합니다. 로 생성된 단일 행 테이블만들기 순서. 젠 토토 객체는 일반적으로 생성하는 데 사용됩니다. 테이블 행의 고유 식별자입니다. 시퀀스 기능, 에 나열됨테이블 9-34, 간단하고 다중 사용자에게 안전한 가져오기 방법을 제공합니다. 젠 토토 객체의 연속 시퀀스 값입니다.
표 9-34. 젠 토토 함수
| 기능 | 반환 유형 | 설명 |
|---|---|---|
다음값(텍스트) |
비긴트 | 전진 젠 토토 및 새 값 반환 |
곡선(텍스트) |
비긴트 | 가장 최근에 얻은 반환 값다음값 |
setval(텍스트,
비긴트) |
bigint | 시퀀스의 현재 값 설정 |
setval(텍스트,
bigint, 부울) |
비긴트 | 시퀀스의 현재 값을 설정하고is_called플래그 |
대부분 역사적인 이유로 인해 작업할 시퀀스는 시퀀스 함수 호출에 의해 텍스트 문자열로 지정됩니다. 논쟁. 처리와 어느 정도 호환성을 확보하려면 보통SQL이름, 젠 토토 함수는 인수를 소문자로 변환하지 않는 한 문자열은 큰따옴표로 묶였습니다. 따라서
nextval('foo')순서대로 작동foonextval('FOO')순차적으로 작동foonextval('"Foo"')순차적으로 작동함푸
필요한 경우 젠 토토 이름은 스키마로 한정될 수 있습니다.
nextval('myschema.foo')작동myschema.foonextval('"myschema".foo')위와 동일nextval('foo')검색 경로 검색foo
물론 텍스트 인수는 다음의 결과일 수 있습니다. 표현은 단순한 리터럴뿐만 아니라 때때로 유용합니다.
사용 가능한 시퀀스 기능은 다음과 같습니다:
다음값시퀀스 개체를 다음 값으로 전진시키고 반환합니다.
그 가치. 이는 원자적으로 수행됩니다.
세션이 실행됩니다.다음값동시에 각각은 고유한 젠 토토를 안전하게 수신합니다.
값.
곡선가장 최근에 얻은 값을 반환합니다.다음값현재 이 시퀀스에 대해
세션. (다음과 같은 경우 오류가 보고됩니다.다음발이것을 위해 호출된 적이 없습니다
이 세션의 순서입니다.) 이것이
세션 로컬 값을 반환하면 예측 가능한 결과를 얻을 수 있습니다.
다른 세션이 실행 중이더라도 응답다음값그동안.
setval젠 토토 개체의 카운터 값을 재설정합니다. 는
2개의 매개변수 형식은 젠 토토를 설정합니다.마지막_값필드를 지정된 값으로 설정하고
설정합니다is_called필드에서참, 즉 다음다음값앞으로
값을 반환하기 전의 순서입니다. 3개 매개변수에서는
양식,is_called둘 중 하나를 설정할 수 있습니다.참또는거짓. 으로 설정된 경우거짓, 다음다음값지정된 내용을 정확하게 반환합니다.
가치와 시퀀스 발전은 다음과 같이 시작됩니다.
다음다음값. 에 대한
예
SELECT setval('foo', 42);다음다음값43을 반환합니다SELECT setval('foo', 42, true);위와 동일SELECT setval('foo', 42, false);다음다음발42를 반환합니다
다음에 의해 반환된 결과setval은 단지 두 번째 값입니다
논쟁.
중요:동시 차단을 방지하려면 동일한 젠 토토에서 숫자를 얻는 트랜잭션, a
다음값작업은 절대로 이루어지지 않습니다. 롤백됨; 즉, 일단 값을 가져온 후에는 다음과 같은 거래를 수행한 경우에도 사용된 것으로 간주됩니다.다음발나중에 중단됩니다. 이 중단된 트랜잭션이 사용되지 않은 상태로 남을 수 있음을 의미합니다."구멍"할당된 값의 순서대로.setval작업은 절대로 롤백되었습니다.
젠 토토 개체가 기본 매개변수로 생성된 경우,다음값호출하면 반환됩니다
1로 시작하는 연속 값. 다른 동작은 다음과 같습니다.
의 특수 매개변수를 사용하여 얻습니다.젠 토토 생성명령; 보세요
자세한 내용은 명령 참조 페이지를 참조하세요.