이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 36.2. PostgreSQL 토토 베이 시스템버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

36.2. 그만큼PostgreSQL타입 시스템#

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

36.2.1. 기본 토토 핫#

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

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

36.2.2. 컨테이너 토토 핫#

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

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

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

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

36.2.3. 도메인#

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

36.2.4. 의사 토토 핫#

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

36.2.5. 다형성 토토 핫#

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

표 36.1. 다형성 토토 핫

이름 가족 설명
Anylement 단순 함수가 데이터 토토 핫을 수락 함을 나타냅니다
AnyArray 단순 함수가 배열 데이터 토토 핫을 수락 함을 나타냅니다
AnynonArray 단순 함수가 비 어울리 데이터 토토 핫을 수락 함을 나타냅니다
AnyEnum 단순 함수가 열거 데이터 토토 핫을 수락 함을 나타냅니다 (참조Postgresql: Tài liệu: 18: 8.7. 윈 토토c loại được liệt kê)
AnyRange 단순 함수가 모든 범위 데이터 토토 핫을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 18 : 8.17. 젠 토토 유형)
Anymultirange 단순 함수가 멀티 랜지 데이터 토토 핫을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 18 : 8.17. 젠 토토 유형)
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및 기본 요소 일치 매개 변수 선언AnylementAnyArray.

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

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

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

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

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

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

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

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

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

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

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