이 섹션에서는 다음 작업을 위한 기능을 설명합니다.젠 토토 객체, 젠 토토 생성기 또는 단순히 젠 토토라고도 합니다. 젠 토토 객체는 다음을 사용하여 생성된 특수 단일 행 테이블입니다.젠 토토 생성. 젠 토토 개체는 일반적으로 테이블 행에 대한 고유 식별자를 생성하는 데 사용됩니다. 다음에 나열된 젠 토토 함수표 9.50, 젠 토토 객체에서 연속적인 젠 토토 값을 얻기 위한 간단하고 다중 사용자에게 안전한 메서드를 제공합니다.
표 9.50. 젠 토토 함수
|
기능 설명 |
|---|
|
젠 토토 개체를 다음 값으로 전진시키고 해당 값을 반환합니다. 이는 원자적으로 수행됩니다. 여러 세션이 실행되더라도 이 기능에는 다음이 필요합니다. |
|
젠 토토 개체의 현재 값을 설정하고 선택적으로 그 값을 설정합니다. SELECT setval('myseq', 42);다음
다음에 의해 반환된 결과 이 기능에는 다음이 필요합니다 |
|
가장 최근에 얻은 값을 반환합니다. 이 기능에는 다음이 필요합니다. |
|
가장 최근에 반환한 값을 반환합니다. 이 기능에는 다음이 필요합니다 |
동일한 젠 토토에서 숫자를 얻는 동시 트랜잭션을 차단하지 않으려면 다음에서 얻은 값다음발호출 트랜잭션이 나중에 중단되면 재사용을 위해 회수되지 않습니다. 이는 트랜잭션 중단이나 데이터베이스 충돌로 인해 할당된 값 순서에 차이가 발생할 수 있음을 의미합니다. 이는 트랜잭션 중단 없이도 발생할 수 있습니다. 예를 들어삽입그리고충돌 중절은 필요한 작업을 포함하여 삽입될 튜플을 계산합니다다음값다음을 따르게 하는 충돌을 감지하기 전에 호출충돌 중18478_18501PostgreSQL젠 토토 객체얻는 데 사용할 수 없습니다.“틈없는”젠 토토.
마찬가지로 다음에 의해 젠 토토 상태가 변경되었습니다.setval다른 트랜잭션에 즉시 표시되며 호출 트랜잭션이 롤백되어도 취소되지 않습니다.
다음을 포함하는 트랜잭션을 커밋하기 전에 데이터베이스 클러스터가 충돌하는 경우다음값또는setval호출, 젠 토토 상태 변경이 영구 저장소로 전달되지 않았을 수 있으므로 클러스터가 다시 시작된 후 젠 토토가 원래 상태를 갖게 될지 아니면 업데이트된 상태를 갖게 될지는 확실하지 않습니다. 커밋되지 않은 트랜잭션의 다른 효과도 표시되지 않으므로 이는 데이터베이스 내에서 젠 토토를 사용하는 데 해롭지 않습니다. 그러나 데이터베이스 외부의 지속적인 목적으로 젠 토토 값을 사용하려면 다음을 확인하십시오.다음값그렇게 하기 전에 호출이 커밋되었습니다.
젠 토토 함수에 의해 작동될 젠 토토는 다음으로 지정됩니다.regclass인수는 단순히에 있는 젠 토토의 OID입니다.pg_class시스템 카탈로그. 그러나 OID를 직접 찾을 필요는 없습니다.regclass데이터 유형의 입력 변환기가 대신 작업을 수행합니다. 리터럴 상수처럼 보이도록 작은따옴표로 묶인 젠 토토 이름을 작성하기만 하면 됩니다. 일반 취급과의 호환성을 위해SQL이름, 젠 토토 이름 주위에 큰따옴표가 포함되어 있지 않으면 문자열은 소문자로 변환됩니다. 따라서:
nextval('foo')순차적으로 작동foonextval('FOO')순서대로 작동foonextval('"Foo"')순서대로 작동푸
필요한 경우 젠 토토 이름은 스키마로 한정될 수 있습니다.
nextval('myschema.foo')작동myschema.foonextval('"myschema".foo')위와 동일nextval('foo')검색 경로 검색foo
참조섹션 8.19자세한 내용은regclass.
이전포스트그레SQL8.1, 젠 토토 함수의 인수 유형은 다음과 같습니다.텍스트, 아님regclass, 위에 설명된 텍스트 문자열에서 OID 값으로의 변환은 각 호출 중 런타임에 발생합니다. 이전 버전과의 호환성을 위해 이 기능은 여전히 존재하지만 내부적으로는 이제 다음의 암시적 강제로 처리됩니다.텍스트에regclass함수가 호출되기 전.
순차 함수의 인수를 장식되지 않은 리터럴 문자열로 작성하면 이는 유형의 상수가 됩니다regclass. 이는 실제로 OID일 뿐이므로 나중에 이름 변경, 스키마 재할당 등에도 불구하고 원래 식별된 젠 토토를 추적합니다.“초기 바인딩”동작은 일반적으로 열 기본값 및 보기의 젠 토토 참조에 바람직합니다. 하지만 때로는 원할 수도 있습니다.“늦은 바인딩”여기서 젠 토토 참조는 런타임 시 확인됩니다. 지연 바인딩 동작을 얻으려면 상수를 강제로텍스트대신 상수regclass:
nextval('foo'::text)foo런타임에 조회됩니다.
후기 바인딩은 에서 지원되는 유일한 동작임을 참고하세요.PostgreSQL8.1 이전 릴리스이므로 이전 애플리케이션의 의미를 보존하려면 이 작업을 수행해야 할 수도 있습니다.
물론 젠 토토 함수의 인수는 표현식일 수도 있고 상수일 수도 있습니다. 텍스트 표현식인 경우 암시적 강제로 인해 런타임 조회가 발생합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.