젠 토토 만들기

젠 토토 작성 - 새 젠 토토 생성기 정의

시놉시스

생성 [임시 | 온도] 젠 토토 [존재하지 않으면]이름[asdata_type]
    [증분 [by]증분]
    [MinValueminvalue| MinValue 없음] [MaxValuemaxValue| maxValue 없음]
    [시작 [with]시작] [캐시캐시] [[아니오] 사이클]
    [ 소유table_name.column_name| 없음  ]

설명

젠 토토 만들기새로운 시퀀스 번호 생성기를 만듭니다. 여기에는 이름으로 새로운 특수 싱글 열 테이블을 작성하고 초기화하는 것이 포함됩니다이름. 생성기는 명령을 발행하는 사용자가 소유합니다.

스키마 이름이 주어지면 지정된 스키마에서 시퀀스가 생성됩니다. 그렇지 않으면 현재 스키마에서 생성됩니다. 임시 시퀀스는 특수 스키마에 존재하므로 임시 시퀀스를 만들 때 스키마 이름을 제공 할 수 없습니다. 시퀀스 이름은 동일한 스키마에서 다른 시퀀스, 테이블, 인덱스, 뷰 또는 외국 테이블의 이름과 구별되어야합니다.

젠 토토가 만들어지면 함수를 사용합니다NextVal, currvalsetVal젠 토토에서 작동합니다. 이러한 기능은에 문서화되어 있습니다.PostgreSQL : 문서 : 14 : 9.17. 스포츠 토토 조작 기능.

젠 토토를 직접 업데이트 할 수는 없지만 다음과 같은 쿼리를 사용할 수 있습니다.

선택 *에서이름;

젠 토토의 매개 변수 및 현재 상태를 검사합니다. 특히last_value젠 토토의 필드는 모든 세션에 의해 할당 된 마지막 값을 보여준다. (물론 다른 세션이 적극적으로 수행하는 경우이 값은 인쇄 될 때까지 쓸모 없을 수 있습니다.NextVal전화.)

매개 변수

임시또는temp

지정된 경우 시퀀스 객체는이 세션에 대해서만 생성되며 세션 종료시 자동으로 삭제됩니다. 동일한 이름을 가진 기존 영구 시퀀스는 표시되지 않습니다 (이 세션에서) 스키마 자격이없는 이름을 참조하지 않는 한 임시 시퀀스가 존재하지 않습니다.

존재하지 않으면

같은 이름과의 관계가 이미 존재하는 경우 오류를 던지지 마십시오. 이 경우 통지가 발행됩니다. 기존 관계가 생성 된 시퀀스와 같은 것이라는 보장은 없습니다. 시퀀스도 아닐 수도 있습니다.

이름

생성 될 시퀀스의 이름 (선택적으로 스키마 자격).

data_type

선택 사항 조항asdata_type젠 토토의 데이터 유형을 지정합니다. 유효한 유형은smallint, 정수bigint. bigint기본값입니다. 데이터 유형은 젠 토토의 기본 최소 및 최대 값을 결정합니다.

증분

선택 사항 조항증분증분새 값을 생성하기 위해 현재 순서 값에 추가되는 값을 지정합니다. 양수 값은 오름차순 젠 토토를 만들고, 음의 내림차순 젠 토토를 만듭니다. 기본값은 1입니다.

minvalue
MinValue 없음

선택 사항 조항minvalueminvalue젠 토토가 생성 할 수있는 최소값을 결정합니다. 이 조항이 제공되지 않거나MinValue 없음지정되어 있으면 기본값이 사용됩니다. 오름차순 젠 토토의 기본값은 1입니다. 하강 젠 토토의 기본값은 데이터 유형의 최소값입니다.

maxValue
MaxValue 없음

선택 사항 조항MaxValueMaxValue젠 토토의 최대 값을 결정합니다. 이 조항이 제공되지 않거나MaxValue 없음지정된 다음 기본값이 사용됩니다. 오름차순 젠 토토의 기본값은 데이터 유형의 최대 값입니다. 하강 젠 토토의 기본값은 -1입니다.

시작

선택 사항 조항시작시작시퀀스를 어디서나 시작할 수 있습니다. 기본 시작 값은입니다.minvalue오름차순 젠 토토 및MaxValue내림차순

캐시

옵션 조항캐시캐시더 빠른 액세스를 위해 얼마나 많은 시퀀스 숫자를 사전에 배치하고 메모리에 저장 해야하는지 지정합니다. 최소값은 1입니다 (한 번에 하나의 값만 생성 할 수 있습니다. 즉 캐시 없음). 기본값이기도합니다.

사이클
사이클 없음

the사이클옵션은시 순서가 래핑 할 수 있습니다.maxValue또는minvalue각각 오름차순 또는 내림차순으로 도달했습니다. 한계에 도달하면 생성 된 다음 숫자는입니다.minvalue또는maxValue각각.

if사이클 없음지정되어 있습니다.NextVal젠 토토에 도달 한 후 최대 값에 도달하면 오류가 반환됩니다. 둘 다사이클또는사이클 없음지정되어 있습니다.사이클 없음기본값입니다.

소유 table_name.column_name
없음

the소유자옵션으로 인해 시퀀스가 특정 테이블 열과 연관되어 해당 열 (또는 전체 테이블)이 삭제되면 시퀀스도 자동으로 삭제됩니다. 지정된 테이블에는 동일한 소유자가 있어야하며 시퀀스와 동일한 스키마에 있어야합니다.없음, 기본값은 그러한 연관성이 없음을 지정합니다.

노트

use드롭 젠 토토젠 토토를 제거하려면

젠 토토 기반bigint산술, 따라서 범위는 8 바이트 정수의 범위를 초과 할 수 없습니다 (-9223372036854775808 ~ 9223372036854775807).

왜냐하면NextValandsetVal통화는 절대 롤백되지 않으며 젠 토토 객체를 사용할 수 없습니다.Gapless젠 토토 번호의 할당이 필요합니다. 카운터가 포함 된 테이블의 독점 잠금을 사용하여 갭리스 할당을 구축 할 수 있습니다. 그러나이 솔루션은 젠 토토 객체보다 훨씬 비싸다. 특히 많은 트랜잭션이 동시에 젠 토토 숫자를 필요로하는 경우.

a이면 예기치 않은 결과를 얻을 수 있습니다.캐시하나보다 큰 설정은 여러 세션에서 동시에 사용될 시퀀스 객체에 사용됩니다. 각 세션은 시퀀스 객체에 대한 하나의 액세스 동안 연속 시퀀스 값을 할당하고 캐시하고 시퀀스 객체의를 증가시킵니다.last_value그에 따라. 그런 다음 다음캐시-1 사용NextVal해당 세션 내에서 젠 토토 객체에 닿지 않고 Preallocated 값을 반환합니다. 따라서 세션 내에 할당되었지만 사용되지 않은 숫자는 해당 세션이 종료되면 손실되므로순서로.

또한 여러 세션이 별개의 젠 토토 값을 할당하도록 보장되지만 모든 세션이 고려 될 때 값이 젠 토토에서 생성 될 수 있습니다. 예를 들어,캐시10의 설정, 세션 A가 값 1..10을 예약 할 수 있습니다NextVal= 1, 세션 B는 값 11..20 및 return을 예약 할 수 있습니다NextVal= 11 세션 a가 생성되기 전NextVal= 2. 따라서캐시하나의 설정NextVal값은 순차적으로 생성됩니다. A와 함께캐시하나보다 큰 설정NextVal값은 모두 순차적으로 생성되는 것이 아니라 값이 다릅니다. 또한,last_value아직 세션이 예약 한 최신 값을 반영합니다.NextVal.

또 다른 고려 사항은 a입니다.setVal그러한 시퀀스에서 실행 된 다른 세션에서 실행 된 다른 세션은 그들이 캐시 한 preallocated 값을 고용 할 때까지 눈치 채지 못할 것입니다..

예제

호출되는 오름차순 젠 토토 만들기Serial, 101에서 시작 :

시퀀스 생성 직렬 시작 101;

이 순서에서 다음 번호를 선택하십시오 :

SELECT NEXTVAL ( 'Serial');

 다음 발
-------
     101

이 순서에서 다음 번호를 선택하십시오 :

NextVal ( 'Serial')을 선택하십시오.

 다음 발
-------
     102

이 순서를 an 사용하십시오.삽입명령 :

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

A 이후 젠 토토 값을 업데이트합니다복사:

시작;
'input_file'에서 유통 업체를 복사합니다.
유통 업체에서 SetVal ( 'Serial', Max (ID))를 선택하십시오.
끝;

호환성

젠 토토 만들기SQL표준, 다음 예외가 포함되어 있습니다.

  • 다음 값을 얻는 것은를 사용하여 수행됩니다.nextVal ()표준 대신 함수다음 값표현.

  • the소유절은 A입니다.PostgreSQL확장.

수정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면