38.2. 그만큼PostgreSQL타입 시스템

PostgreSQL데이터 토토 결과은 기본 토토 결과, 컨테이너 토토 결과, 도메인 및 의사 토토 결과으로 나눌 수 있습니다.

38.2.1. 기본 유형

기본 토토 결과은와 같은 것입니다.정수, 그것은 아래에서 구현됩니다SQL언어 (일반적으로 C와 같은 저수준 언어). 일반적으로 추상 데이터 토토 결과으로 자주 알려진 것에 해당합니다.PostgreSQL사용자가 제공 한 함수를 통해서만 해당 토토 결과에서만 작동 할 수 있으며 사용자가 설명하는 정도까지 그러한 토토 결과의 동작 만 이해합니다. 내장 된 기본 토토 결과은에 설명되어 있습니다.8 장.

열거 된 (ENUM) 토토 결과은 기본 토토 결과의 하위 범주로 간주 될 수 있습니다. 주요 차이점은 Just를 사용하여 만들 수 있다는 것입니다.SQL저수준 프로그래밍없이 명령. 참조섹션 8.7자세한 내용은

38.2.2. 컨테이너 유형

PostgreSQL세 종류의컨테이너토토 결과은 다른 토토 결과의 여러 값을 포함하는 토토 결과입니다. 이들은 배열, 복합재 및 범위입니다.

배열은 모두 같은 토토 결과의 여러 값을 보유 할 수 있습니다. 배열 토토 결과은 각 기본 토토 결과, 복합 토토 결과, 범위 토토 결과 및 도메인 토토 결과에 대해 자동으로 작성됩니다. 그러나 배열 배열은 없습니다. 토토 결과 시스템에 관한 한 다차원 배열은 1 차원 배열과 동일합니다. 참조PostgreSQL : 문서 : 14 : 8.15. 토토 꽁 머니자세한 내용은

사용자가 테이블을 만들 때마다 복합 토토 결과 또는 행 토토 결과이 생성됩니다. 또한 사용하는 것도 가능합니다토토 결과 만들기a독립형관련 테이블이없는 복합 토토 결과. 복합 토토 결과은 단순히 필드 이름이 관련된 토토 결과 목록입니다. 복합 토토 결과의 값은 필드 값의 행 또는 레코드입니다. 참조PostgreSQL : 문서 : 14 : 8.16. 와이즈 토토 유형자세한 내용은

범위 토토 결과은 동일한 토토 결과의 두 값을 보유 할 수 있습니다. 이는 범위의 하한 및 상한입니다. 몇 가지 내장 토토 결과이 존재하지만 범위 토토 결과은 사용자가 만듭니다. 참조PostgreSQL : 문서 : 14 : 8.17. 토토 베이 유형자세한 내용은

38.2.3. 도메인

도메인은 특정 기본 토토 결과을 기반으로하며 여러 목적으로 기본 토토 결과과 상호 교환 할 수 있습니다. 그러나 도메인은 유효한 값을 기본 토토 결과이 허용하는 것의 하위 집합으로 제한하는 제약 조건을 가질 수 있습니다. 도메인은를 사용하여 생성됩니다.SQL명령도메인 만들기. 참조PostgreSQL : 문서 : 14 : 8.18. 토토 꽁 머니 유형자세한 내용은

38.2.4. 의사 유형

몇 가지가 있습니다Pseudo-types특별한 목적. 의사 유형은 컨테이너 유형의 테이블 또는 구성 요소의 열로 나타날 수 없지만 인수 및 결과 유형을 선언하는 데 사용될 수 있습니다. 이것은 유형 시스템 내에서 특수 클래스의 기능을 식별하는 메커니즘을 제공합니다.표 8.27기존 의사 토토 결과을 나열합니다.

38.2.5. 다형성 토토 결과

특별한 관심의 일부 의사 토토 결과은입니다.다형성 토토 결과, 선언하는 데 사용되는다형성 기능. 이 강력한 기능을 사용하면 단일 기능 정의가 여러 다른 데이터 유형에서 작동 할 수 있으며 특정 데이터 유형은 특정 호출에서 실제로 전달 된 데이터 유형에 의해 결정됩니다. 다형성 토토 결과은에 표시됩니다.표 38.1. 그들의 사용의 일부 예는에 나타납니다.섹션 38.5.11.

표 38.1. 다형성 토토 결과

이름 가족 설명
Anylement 단순 함수가 데이터 토토 결과을 수락 함을 나타냅니다
AnyArray 단순 함수가 배열 데이터 토토 결과을 수락 함을 나타냅니다.
AnynonArray 단순 함수가 비 어울리 데이터 토토 결과을 수락 함을 나타냅니다
AnyEnum 단순 함수가 열거 데이터 토토 결과을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 14 : 8.7. 열거 된)
AnyRange 단순 함수가 모든 범위 데이터 토토 결과을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 14 : 8.17. 토토 베이 유형)
Anymultirange 단순 함수가 멀티 랜지 데이터 토토 결과을 허용한다는 것을 나타냅니다 (참조PostgreSQL : 문서 : 14 : 8.17. 토토 베이 유형19488_19491
Anycompatible common 함수는 공통 데이터 토토 결과에 대한 여러 인수를 자동으로 프로모션하여 모든 데이터 토토 결과을 수락 함을 나타냅니다.
anycompatiblearray common 함수는 공통 데이터 토토 결과에 대한 여러 인수를 자동으로 프로모션하여 배열 데이터 토토 결과을 수락 함을 나타냅니다.
anycompatiblenonArray common 함수는 공통 데이터 토토 결과에 대한 여러 인수를 자동으로 프로모션하여 비 어울리 데이터 토토 결과을 수락 함을 나타냅니다.
anycompatiblerange common 함수는 공통 데이터 토토 결과에 대한 여러 인수를 자동으로 프로모션하여 범위 데이터 토토 결과을 수락 함을 나타냅니다.
anycompatiblemultirange common 함수는 공통 데이터 토토 결과에 대한 여러 인수를 자동으로 프로모션하여 멀티 랜지 데이터 토토 결과을 수락 함을 나타냅니다.

다형성 인수와 결과는 서로 연결되어 있으며 다형성 함수를 호출하는 쿼리가 구문 분석 될 때 특정 데이터 유형으로 해결됩니다. 둘 이상의 다형성 인수가 있으면 입력 값의 실제 데이터 유형이 아래에 설명 된대로 일치해야합니다. 함수의 결과 유형이 다형성이거나 다형성 토토 결과의 출력 매개 변수가있는 경우, 해당 결과의 유형은 다음과 같은 다형성 입력의 실제 유형에서 추론됩니다..

단순다형성 토토 결과의 가족, 일치 및 공제 규칙은 다음과 같이 작동합니다.

각 위치 (인수 또는 반환 값)로 선언 된Anylement특정 실제 데이터 토토 결과을 가질 수 있지만 주어진 호출에서는 모두이어야합니다.동일실제 토토 결과. 각 위치는로 선언되었습니다.AnyArray배열 데이터 유형을 가질 수 있지만 마찬가지로 모두 동일한 유형이어야합니다. 그리고 마찬가지로, 직책은로 선언되었습니다.AnyRange모두 동일한 범위 유형이어야합니다. 마찬가지로Anymultirange.

또한, 선언 된 위치가 있다면AnyArray그리고 다른 사람들이 선언Anylement,의 실제 배열 토토 결과AnyArray위치는 요소가 동일한 유형의 배열이어야합니다.Anylement위치.AnynonArray|Anylement, 그러나 실제 토토 결과이 배열 토토 결과이되어서는 안된다는 추가 제약 조건을 추가합니다.AnyEnum|Anylement, 그러나 실제 토토 결과이 열거 된 토토 결과이어야한다는 추가 제약 조건을 추가합니다.

마찬가지로, 선언 된 위치가있는 경우AnyRange그리고 다른 사람들이 선언Anylement또는AnyArray,의 실제 범위 토토 결과AnyRange위치는 하위 유형이 동일한 유형 인 범위 여야합니다.Anylement위치 및 요소 유형과 동일합니다AnyArray위치. 선언 된 직책이있는 경우Anymultirange, 실제 멀티 랜지 토토 결과은 선언 된 매개 변수 일치 범위를 포함해야합니다AnyRange및 기본 요소 일치 매개 변수 선언AnylementandAnyArray.

따라서, 다형성 토토 결과으로 둘 이상의 인수 위치가 선언되면, 순 효과는 실제 인수 유형의 특정 조합 만 허용된다는 것입니다. 예를 들어,로 선언 된 함수Equal (Anylement, Anylement)동일한 데이터 유형 인 한 두 개의 입력 값을 취합니다.

함수의 반환 값이 다형성 토토 결과으로 선언되면 다형성 인 인수 위치가 하나 이상 있어야하며 다형성 인수에 제공되는 실제 데이터 유형이 해당 호출의 실제 결과 유형을 결정해야합니다. 예를 들어, 배열 위트 스크립팅 메커니즘이 아직 없으면 첨자를 |첨자 (AnyArray, Integer)를 반환합니다. 이 선언은 실제 첫 번째 인수가 배열 토토 결과으로 제한되며, 파서는 실제 첫 번째 인수 토토 결과에서 올바른 결과 토토 결과을 유추 할 수 있습니다. 또 다른 예는로 선언 된 함수입니다.f (Anyarray) 반환열거 토토 결과의 배열 만 허용합니다.

대부분의 경우, 파서는 같은 패밀리에서 다른 다형성 토토 결과 인 인수의 다형성 결과 유형에 대한 실제 데이터 유형을 유추 할 수 있습니다. 예를 들어AnyArray에서 추론 할 수 있습니다Anylement또는 그 반대도 마찬가지입니다. 예외적으로 유형의 다형성 결과AnyRange토토 결과의 인수가 필요합니다AnyRange; 에서 추론 할 수 없습니다AnyArray또는Anylement인수. 동일한 하위 유형의 여러 범위 유형이있을 수 있기 때문입니다.

참고AnynonArrayandAnyEnum별도의 토토 결과 변수를 나타내지 마십시오. 그들은와 같은 토토 결과입니다.Anylement, 추가적인 제약 조건. 예를 들어 함수를 선언F (Anylement, Anyenum)|F (Anyenum, Anyenum): 실제 인수는 모두 동일한 열거 유형이어야합니다.

common다형성 토토 결과의 가족, 일치 및 공제 규칙은와 거의 동일하게 작동합니다.단순가족, 한 가지 주요 차이점 : 실제 유형의 인수 유형은 단일 공통 유형으로 암시 적으로 캐스팅 될 수있는 한 동일 할 필요는 없습니다. 공통 유형은와 같은 규칙에 따라 선택됩니다.Union및 관련 구성 (참조배트맨 토토 PostgreSQL : 문서 : 14 : 10.5. 연합, 사례 및 관련 구성). 공통 토토 결과의 선택은 실제 토토 결과의를 고려합니다.AnycompatibleanycompatiblenonArray입력, 배열 요소 토토 결과anycompatiblearray입력,의 범위 하위 토토 결과anycompatiblerange입력 및 멀티 랜지 하위 토토 결과의anycompatiblemultirange입력. 만약에anycompatiblenonArray존재한다면 공통 토토 결과은 비 어울리 토토 결과이어야합니다. 공통 토토 결과이 식별되면 인수AnycompatibleandanycompatiblenonArray위치는 자동으로 해당 토토 결과으로 캐스팅되며 인수는anycompatiblearray위치는 해당 토토 결과의 배열 토토 결과에 자동으로 캐스팅됩니다.

하위 토토 결과 만 알고있는 범위 토토 결과을 선택할 방법이 없기 때문에anycompatiblerange및/또는anycompatiblemultirange해당 유형으로 선언 된 모든 인수는 동일한 실제 범위 및/또는 멀티 랜지 유형을 가지며 해당 유형의 하위 유형은 선택한 공통 유형과 일치하므로 범위 값의 캐스팅이 필요하지 않아야합니다. 와 마찬가지로AnyRangeandAnymultirange, 사용anycompatiblerangeandAnymultirange함수 결과 토토 결과으로서가 있어야합니다.anycompatiblerange또는anycompatiblemultirange인수.

없음anycompatibleenum타입. 이러한 유형은 일반적으로 열거 유형에 암시 적 캐스트가 없기 때문에 그다지 유용하지 않을 것입니다. 즉, 비열한 열거적인 입력에 대한 공통 유형을 해결할 방법이 없음을 의미합니다..

the단순andcommon다형성 패밀리는 두 개의 독립적 인 토토 결과 변수 세트를 나타냅니다. 예를 들어 고려

함수 생성 myfunc (aylement, by element,
                       c anycompatible, d anycompatible)
반환 할 수있는 반품 ...

이 함수의 실제 호출에서 처음 두 입력은 정확히 같은 토토 결과을 가져야합니다. 마지막 두 입력은 공통 토토 결과으로 홍보 할 수 있어야하지만이 토토 결과은 처음 두 입력의 토토 결과과 관련이 없습니다. 결과에는 마지막 두 입력의 공통 토토 결과이 있습니다.

변수 함수 (하나는 변수 수의 인수를 취하는 것과 같이섹션 38.5.6)는 다형성이 될 수 있습니다 : 이것은 마지막 매개 변수를로 선언함으로써 달성됩니다.variadic AnyArray또는variadic anycompatiblearray. 실제 결과 유형을 일치시키고 결정하기 위해, 그러한 함수는 적절한 숫자를 작성한 것과 동일하게 동작합니다AnynonArray또는anycompatiblenonArray매개 변수.

정정 제출

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