이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 9.17. 스포츠 토토 베트맨 조작 기능버전 또는 위에 나열된 다른 지원 버전 중 하나를 선택하세요.

9.17. 젠 토토 조작 함수

이 섹션에서는 다음 작업에 필요한 기능을 설명합니다.젠 토토 객체, 젠 토토 생성기 또는 단순히 젠 토토라고도 합니다. 젠 토토 객체는 다음을 사용하여 생성된 특수 단일 행 테이블입니다.젠 토토 생성. 젠 토토 개체는 일반적으로 테이블 행에 대한 고유 식별자를 생성하는 데 사용됩니다. 다음에 나열된 젠 토토 함수표 9.50, 젠 토토 객체에서 연속적인 젠 토토 값을 얻기 위한 간단하고 다중 사용자에게 안전한 메서드를 제공합니다.

표 9.50. 젠 토토 함수

기능

설명

다음값 ( regclass ) → 비긴트

젠 토토 개체를 다음 값으로 전진시키고 해당 값을 반환합니다. 이는 원자적으로 수행됩니다. 여러 세션이 실행되더라도다음값동시에 각각은 고유한 젠 토토 값을 안전하게 수신합니다. 젠 토토 객체가 기본 매개변수로 생성된 경우, 연속다음발호출은 1부터 시작하는 연속 값을 반환합니다. 다른 동작은 다음의 적절한 매개변수를 사용하여 얻을 수 있습니다.젠 토토 생성명령.

이 기능에는 다음이 필요합니다.사용또는업데이트젠 토토에 대한 권한.

setval ( regclass, bigint [, 부울 ] ) → 비긴트

젠 토토 개체의 현재 값을 설정하고 선택적으로 그 값을 설정합니다.is_called플래그. 2개의 매개변수 형식은 젠 토토의마지막_값필드를 지정된 값으로 설정하고 해당 값을 설정합니다.is_called필드에서, 즉 다음다음값값을 반환하기 전에 젠 토토를 진행합니다. 보고될 값곡선도 지정된 값으로 설정됩니다. 3개의 매개변수 형식에서,is_called둘 중 하나로 설정 가능또는거짓. 2개의 매개변수 형식과 동일한 효과가 있습니다. 으로 설정된 경우거짓, 다음다음값정확히 지정된 값을 반환하고 다음과 같이 젠 토토 발전이 시작됩니다.다음값. 또한, 다음에서 보고된 값은곡선15285_15329

SELECT setval('myseq', 42);다음다음값43을 반환합니다SELECT setval('myseq', 42, true);위와 동일SELECT setval('myseq', 42, false);다음다음값42를 반환합니다

다음에 의해 반환된 결과setval은 단지 두 번째 인수의 값입니다.

이 기능에는 다음이 필요합니다.업데이트젠 토토에 대한 권한입니다.

곡선 ( regclass ) → 비긴트

가장 최근에 얻은 값을 반환합니다.다음발현재 세션의 이 젠 토토에 대해. (다음과 같은 경우 오류가 보고됩니다.다음값이 세션에서 이 젠 토토에 대해 호출된 적이 없습니다.) 이는 세션 로컬 값을 반환하기 때문에 다른 세션이 실행되었는지 여부에 관계없이 예측 가능한 답변을 제공합니다.다음값현재 세션이 그랬기 때문입니다.

이 기능에는 다음이 필요합니다.사용또는선택젠 토토에 대한 권한입니다.

마지막 값 () → 비긴트

가장 최근에 반환한 값을 반환합니다.다음발현재 세션에서. 이 기능은 다음과 동일합니다.곡선, 단, 젠 토토 이름을 인수로 사용하는 대신 젠 토토를 참조하는 경우는 제외다음값현재 세션에서 가장 최근에 적용되었습니다. 호출 오류입니다.마지막 값if다음값현재 세션에서는 아직 호출되지 않았습니다.

이 기능에는 다음이 필요합니다사용또는선택마지막으로 사용된 젠 토토에 대한 권한.


주의

동일한 젠 토토에서 숫자를 얻는 동시 트랜잭션을 차단하지 않으려면 다음에서 얻은 값다음값호출 트랜잭션이 나중에 중단되면 재사용을 위해 회수되지 않습니다. 이는 트랜잭션 중단이나 데이터베이스 충돌로 인해 할당된 값 순서에 차이가 발생할 수 있음을 의미합니다. 이는 트랜잭션 중단 없이도 발생할 수 있습니다. 예를 들어삽입그리고충돌 중절은 필요한 작업을 포함하여 삽입될 튜플을 계산합니다다음값다음을 따르게 하는 충돌을 감지하기 전에 호출충돌 중18879_18902PostgreSQL젠 토토 객체얻는 데 사용할 수 없습니다.틈없는젠 토토.

마찬가지로 다음에 의해 젠 토토 상태가 변경되었습니다.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.

참고

이전PostgreSQL8.1, 젠 토토 함수의 인수 유형은 다음과 같습니다.텍스트, 아님regclass, 위에 설명된 텍스트 문자열에서 OID 값으로의 변환은 각 호출 중 런타임에 발생합니다. 이전 버전과의 호환성을 위해 이 기능은 여전히 존재하지만 내부적으로는 이제 다음의 암시적 강제로 처리됩니다.텍스트regclass함수가 호출되기 전.

순차 함수의 인수를 장식되지 않은 리터럴 문자열로 작성할 때 이는 유형의 상수가 됩니다regclass. 이는 실제로 OID일 뿐이므로 나중에 이름 변경, 스키마 재할당 등에도 불구하고 원래 식별된 젠 토토를 추적합니다.초기 바인딩동작은 일반적으로 열 기본값 및 보기의 젠 토토 참조에 바람직합니다. 하지만 때로는 원할 수도 있습니다.늦은 바인딩여기서 젠 토토 참조는 런타임에 확인됩니다. 지연 바인딩 동작을 얻으려면 상수를 강제로텍스트대신 상수regclass:

nextval('foo'::text)foo런타임에 조회됩니다.

후기 바인딩은 에서 지원되는 유일한 동작임을 참고하십시오.포스트그레SQL8.1 이전 릴리스이므로 이전 애플리케이션의 의미를 보존하려면 이 작업을 수행해야 할 수도 있습니다.

물론 젠 토토 함수의 인수는 표현식일 수도 있고 상수일 수도 있습니다. 텍스트 표현식인 경우 암시적 강제로 인해 런타임 조회가 발생합니다.