이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 와이즈 토토 생성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

토토 캔 만들기

이름

토토 캔 작성 - 새로운 토토 캔 번호를 만듭니다 발전기
토토 캔 만들기Seqname[증분증분]
    [MinValueminvalue] [MaxValuemaxValue]
    [ 시작시작] [캐시캐시] [사이클]

입력

seqname

생성 할 시퀀스의 이름.

증분

the증분증분절은 선택 사항입니다. 양수 값은 오름차순 토토 캔를 만듭니다 음의 하강 토토 캔. 기본값은입니다 하나 (1).

minvalue

선택 사항 조항minvalueminvalue결정 토토 캔가 생성 할 수있는 최소값. 기본값은입니다 오름차순 및 내림차순 토토 캔의 경우 1 및 -2147483647, 각기.

MaxValue

선택 사항 조항 사용maxValuemaxValueto 토토 캔의 최대 값을 결정하십시오. 기본값 오름차순 및 내림차순은 2147483647이고 -1입니다 각각 토토 캔.

시작

선택 사항시작시작활성화 어디서나 시작하는 시퀀스. 기본 시작 값은입니다.MinValue오름차순 토토 캔 및maxValue내림차순.

캐시

the캐시캐시옵션 시퀀스를 활성화합니다 더 빨리 메모리에 Preallocated 및 저장 될 숫자 입장. 최소값은 1입니다 (하나의 값 만 한 번에 생성, 즉 캐시 없음) 기본.

사이클

선택적 사이클 키워드는 계속 될 순서maxValue또는minvalue각각 오름차순 또는 내림차순. 한도 인 경우 도달하면 다음에 생성 된 숫자는 무엇이든minValue또는maxValueis, 적절합니다.

출력

Create

명령이 성공하면 메시지가 반환되었습니다.

오류 : 관계 'Seqname' 이미 존재합니다

지정된 토토 캔가 ​​이미 존재하는 경우.

오류 : DefineseQuence : MinValue (시작) 할 수 없습니다 = maxValue (max)

지정된 시작 값이 범위를 벗어난 경우.

오류 : 정의 : 시작 값 (시작) < MinValue (min)

지정된 시작 값이 범위를 벗어난 경우.

오류 : Definesequence : MinValue (Min)는 = MaxValue (max)

최소 및 최대 값이 일관되지 않은 경우.

설명

토토 캔 만들기새로 들어갑니다 시퀀스 번호 생성기는 현재 데이터베이스로 내립니다. 이것 새 단일 줄 테이블을 작성하고 초기화하는 것이 포함됩니다 이름seqname. 생성기 명령을 발행하는 사용자가 "소유"합니다.

토토 캔가 ​​만들어지면 함수를 사용할 수 있습니다NextVal (seqname)에서 새 번호를 얻으려면 순서. 함수Currval ( 'seqname')를 결정하는 데 사용될 수 있습니다 마지막 전화로 반환 된 번호NextVal (Seqname)현재 세션에서 지정된 토토 캔의 경우. 함수setVal ( 'Seqname',NewValue)를 설정하는 데 사용될 수 있습니다 지정된 시퀀스의 현재 값. 다음 전화NextVal (seqname)주어진 값을 반환합니다 또한 토토 캔 증가.

쿼리 사용

선택 *에서Seqname;
토토 캔의 매개 변수를 얻으려면. 대안으로 위와 같이 원래 정의에서 매개 변수를 가져 오면 사용할 수 있습니다
last_value from 선택Seqname;
백엔드가 할당 한 마지막 값을 얻으려면

저수준 잠금은 다중 동시를 가능하게하는 데 사용됩니다 발전기에 대한 호출.

주의

캐시 설정이면 예기치 않은 결과를 얻을 수 있습니다 하나 이상의 시퀀스 객체에 사용됩니다. 여러 백엔드에 의해 동시에 사용됩니다. 각 백엔드는 할 것입니다 하나 동안 연속 시퀀스 값을 할당하고 캐시합니다 시퀀스 객체에 대한 액세스 및 시퀀스를 증가시킵니다 그에 따라 Object의 Last_Value. 그런 다음 다음 캐시 -1입니다 해당 백엔드 내에서 NextVal의 사용은 단순히 반환합니다 공유 객체에 닿지 ​​않고 Preallocated 값. 그래서, 할당 된 숫자는 현재 세션에서 사용되지 않는 것입니다. 길을 잃습니다. 또한 여러 백엔드는 있지만 뚜렷한 시퀀스 값, 값을 할당하도록 보장됩니다 모든 백엔드가있을 때 시퀀스에서 생성 될 수 있습니다. 존경받는. (예를 들어, 캐시 설정이 10, 백엔드 a 값 1..10을 예약하고 NextVal = 1을 반환합니다. 그런 다음 백엔드 B는 값 11..20을 예약하고 반환 할 수 있습니다 Backend A 전 NextVal = 11이 NextVal = 2를 생성했습니다.) 따라서, 따라서, 캐시 설정을 사용하면 NextVal 값은 순차적으로 생성됩니다. 캐시로 하나보다 큰 설정은 NextVal 값은 모두 뚜렷하지만 그렇지 않습니다 순전히 순차적으로 생성됩니다. 또한 Last_value가 있습니다 모든 백엔드에 의해 예약 된 최신 가치를 반영하십시오 또는 NextVal에 의해 아직 반환되지 않았습니다.

노트

use드롭 토토 캔a 순서.

각 백엔드는 자체 캐시를 사용하여 할당 된 숫자를 저장합니다. 캐시되었지만 현재 세션에서 사용되지 않은 숫자 손실되어 순서대로 "구멍"을 초래합니다.

usage

호출 된 오름차순 토토 캔 작성Serial, 101에서 시작 :

시퀀스 생성 직렬 시작 101;

이 시퀀스에서 다음 번호를 선택하십시오

SELECT NEXTVAL ( 'Serial');

다음 발
-------
    114

삽입물 에서이 토토 캔를 사용하십시오 :

유통 업체 값 (NextVal ( 'Serial'), 'Nothing')에 삽입;

사본 후 토토 캔 값을 설정합니다.

함수 생성 유통 업체 _id_max () int4를 반환합니다
    '유통 업체에서 MAX (ID) 선택' 
    언어 'SQL';
시작하다;
    'input_file'에서 유통 업체를 복사합니다.
    SELECT SETVAL ( 'serial', distributors_id_max ());
끝;

호환성

SQL92

토토 캔 만들기isPostgres언어 확장. 없음토토 캔 만들기성명서SQL92.