PostgreSQL데이터 롤 토토은 기본 롤 토토, 컨테이너 롤 토토, 도메인 및 의사 롤 토토으로 나눌 수 있습니다.
기본 롤 토토은와 같은 것입니다.정수
, 그것은 아래에서 구현됩니다SQL언어 (일반적으로 C와 같은 저수준 언어). 일반적으로 추상 데이터 롤 토토으로 자주 알려진 것에 해당합니다.PostgreSQL사용자가 제공 한 함수를 통해서만 해당 롤 토토에서만 작동 할 수 있으며 사용자가 설명하는 정도까지 그러한 롤 토토의 동작 만 이해합니다. 내장 된 기본 롤 토토은에 설명되어 있습니다.8 장.
열거 된 (ENUM) 롤 토토은 기본 롤 토토의 하위 범주로 간주 될 수 있습니다. 주요 차이점은 Just를 사용하여 만들 수 있다는 것입니다.SQL저수준 프로그래밍없이 명령. 참조섹션 8.7자세한 내용은
PostgreSQL세 종류의“컨테이너”롤 토토은 다른 롤 토토의 여러 값을 포함하는 롤 토토입니다. 이들은 배열, 복합재 및 범위입니다.
배열은 모두 같은 롤 토토의 여러 값을 보유 할 수 있습니다. 배열 롤 토토은 각 기본 롤 토토, 복합 롤 토토, 범위 롤 토토 및 도메인 롤 토토에 대해 자동으로 작성됩니다. 그러나 배열 배열은 없습니다. 롤 토토 시스템에 관한 한 다차원 배열은 1 차원 배열과 동일합니다. 참조PostgreSQL : 문서 : 13 : 8.15. 범퍼카 토토자세한 내용은
사용자가 테이블을 만들 때마다 복합 롤 토토 또는 행 롤 토토이 생성됩니다. 또한 사용하는 것도 가능합니다롤 토토 만들기a“독립형”관련 테이블이없는 복합 롤 토토. 복합 롤 토토은 단순히 필드 이름이 관련된 롤 토토 목록입니다. 복합 롤 토토의 값은 필드 값의 행 또는 레코드입니다. 참조PostgreSQL : 문서 : 13 : 8.16. 토토 커뮤니티 유형자세한 내용은
범위 롤 토토은 동일한 롤 토토의 두 값을 보유 할 수 있습니다. 이는 범위의 하한 및 상한입니다. 몇 가지 내장 롤 토토이 존재하지만 범위 롤 토토은 사용자가 만듭니다. 참조PostgreSQL : 문서 : 13 : 8.17. 스포츠 토토 결과 유형자세한 내용은
도메인은 특정 기본 롤 토토을 기반으로하며 여러 목적으로 기본 롤 토토과 상호 교환 할 수 있습니다. 그러나 도메인은 유효한 값을 기본 롤 토토이 허용하는 것의 하위 집합으로 제한하는 제약 조건을 가질 수 있습니다. 도메인은를 사용하여 생성됩니다.SQL명령도메인 만들기. 참조PostgreSQL : 문서 : 13 : 8.18. 도메인 사설 토토자세한 내용은
몇 가지가 있습니다“Pseudo-types”특별한 목적. 의사 유형은 컨테이너 유형의 테이블 또는 구성 요소의 열로 나타날 수 없지만 인수 및 결과 유형을 선언하는 데 사용될 수 있습니다. 이것은 유형 시스템 내에서 특수 클래스의 기능을 식별하는 메커니즘을 제공합니다.표 8.27기존 의사 롤 토토을 나열합니다.
특별한 관심의 일부 의사 롤 토토은입니다.다형성 롤 토토, 선언하는 데 사용되는다형성 기능. 이 강력한 기능을 사용하면 단일 기능 정의가 여러 다른 데이터 유형에서 작동 할 수 있으며 특정 데이터 유형은 특정 호출에서 실제로 전달 된 데이터 유형에 의해 결정됩니다. 다형성 롤 토토은에 표시됩니다.표 37.1. 그들의 사용의 일부 예는에 나타납니다.섹션 37.5.10.
표 37.1. 다형성 롤 토토
이름 | 가족 | 설명 |
---|---|---|
Anylement |
단순 | 함수가 데이터 롤 토토을 수락 함을 나타냅니다 |
AnyArray |
단순 | 함수가 배열 데이터 롤 토토을 수락 함을 나타냅니다. |
AnynonArray |
단순 | 함수가 비 어울리 데이터 롤 토토을 수락 함을 나타냅니다 |
AnyEnum |
단순 | 함수가 열거 데이터 롤 토토을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 13 : 8.7. 열거 된 범퍼카 토토) |
AnyRange |
단순 | 함수가 모든 범위 데이터 롤 토토을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 13 : 8.17. 스포츠 토토 결과 유형) |
Anycompatible |
common | 함수는 공통 데이터 롤 토토에 대한 여러 인수를 자동으로 프로모션하여 모든 데이터 롤 토토을 수락 함을 나타냅니다. |
anycompatiblearray |
common | 함수는 공통 데이터 롤 토토에 대한 여러 인수를 자동으로 프로모션하여 배열 데이터 롤 토토을 수락 함을 나타냅니다. |
anycompatiblenonArray |
common | 함수는 공통 데이터 롤 토토에 대한 여러 인수를 자동으로 프로모션하여 비 어울리 데이터 롤 토토을 수락 함을 나타냅니다. |
anycompatiblerange |
common | Indicates that a function accepts any range data type, with automatic promotion of multiple arguments to a common data type |
다형성 인수와 결과는 서로 연결되어 있으며 다형성 기능을 호출하는 쿼리가 구문 분석 될 때 특정 데이터 유형으로 해결됩니다. 둘 이상의 다형성 인수가 있으면 입력 값의 실제 데이터 유형이 아래에 설명 된대로 일치해야합니다. 함수의 결과 유형이 다형성이거나 다형성 롤 토토의 출력 매개 변수가있는 경우, 해당 결과의 유형은 다음과 같은 다형성 입력의 실제 유형에서 추론됩니다..
용“단순”다형성 롤 토토의 가족, 매칭 및 공제 규칙은 다음과 같이 작동합니다.
각 위치 (인수 또는 반환 값)로 선언 된Anylement
특정 실제 데이터 롤 토토을 가질 수 있지만 특정 호출에서는 모두이어야합니다.동일실제 롤 토토. 각 위치는로 선언되었습니다.AnyArray
배열 데이터 유형을 가질 수 있지만 마찬가지로 모두 동일한 유형이어야합니다. 그리고 마찬가지로, 직책은로 선언되었습니다.AnyRange
모두 동일한 범위 유형이어야합니다. 또한, 선언 된 직책이 있다면AnyArray
그리고 다른 사람들은 선언Anylement
,의 실제 배열 롤 토토AnyArray
위치는 요소가 동일한 유형 인 배열이어야합니다.Anylement
위치. 마찬가지로, 선언 된 직책이 있다면AnyRange
그리고 다른 사람들이 선언Anylement
또는AnyArray
,의 실제 범위 롤 토토AnyRange
위치는 하위 유형이 동일한 유형 인 범위 여야합니다.Anylement
위치 및 요소 유형과 동일AnyArray
위치.AnynonArray
|Anylement
, 그러나 실제 롤 토토이 배열 롤 토토이되어서는 안된다는 추가 제약 조건을 추가합니다.Anyenum
|Anylement
, 그러나 실제 롤 토토이 열거 된 롤 토토이어야한다는 추가 제약 조건을 추가합니다.
따라서, 다형성 롤 토토으로 둘 이상의 인수 위치가 선언되면, 순 효과는 실제 인수 유형의 특정 조합 만 허용된다는 것입니다. 예를 들어,로 선언 된 함수Equal (Anylement, Anylement)
동일한 데이터 유형 인 한 두 개의 입력 값을 취합니다.
함수의 반환 값이 다형성 롤 토토으로 선언되면 다형성 인 인수 위치가 하나 이상 있어야하며 다형성 인수에 제공되는 실제 데이터 유형이 해당 호출의 실제 결과 유형을 결정해야합니다. 예를 들어, 배열 위트 스크립팅 메커니즘이 아직 없으면 첨자를 |첨자 (AnyArray, Integer)를 반환합니다
. 이 선언은 실제 첫 번째 인수가 배열 롤 토토으로 제한되며, 파서는 실제 첫 번째 인수 롤 토토에서 올바른 결과 롤 토토을 유추 할 수 있습니다. 또 다른 예는로 선언 된 함수입니다.f (Anyarray) 반환
열거 롤 토토의 배열 만 허용합니다.
대부분의 경우, 파서는 같은 패밀리에서 다형성 롤 토토의 인수에서 다형성 결과 유형에 대한 실제 데이터 유형을 유추 할 수 있습니다. 예를 들어AnyArray
에서 추론 할 수 있습니다Anylement
또는 그 반대도 마찬가지입니다. 예외적으로 유형의 다형성 결과AnyRange
롤 토토의 인수가 필요합니다AnyRange
; 에서 추론 할 수 없습니다AnyArray
또는Anylement
인수. 동일한 하위 유형의 여러 범위 유형이있을 수 있기 때문입니다.
참고AnynonArray
및AnyEnum
별도의 롤 토토 변수를 나타내지 마십시오. 그들은와 같은 롤 토토입니다.Anylement
, 추가적인 제약 조건. 예를 들어 함수를 선언f (Anylement, Anyenum)
|F (Anyenum, Anyenum)
: 실제 인수는 모두 동일한 열거 형이어야합니다.
용“common”다형성 롤 토토의 가족, 일치 및 공제 규칙은와 거의 동일하게 작동합니다.“단순”가족, 한 가지 주요 차이점 : 실제 유형의 인수 유형은 단일 공통 유형으로 암시 적으로 캐스팅 될 수있는 한 동일 할 필요는 없습니다. 공통 유형은와 같은 규칙에 따라 선택됩니다.Union
및 관련 구성 (참조스포츠 토토 결과 PostgreSQL : 문서 : 13 : 10.5. 연합, 사례 및 관련 구성). 공통 롤 토토의 선택은 실제 롤 토토의를 고려합니다.Anycompatible
andanycompatiblenonArray
입력, 배열 요소 롤 토토anycompatiblearray
입력 및 범위의 하위 롤 토토anycompatiblerange
입력. 만약에anycompatiblenonArray
존재한다면 공통 롤 토토은 비 어선 롤 토토이어야합니다. 공통 롤 토토이 식별되면 인수AnyCompatible
및anycompatiblenonArray
위치는 자동으로 해당 롤 토토으로 캐스트되며anycompatiblearray
위치는 해당 롤 토토의 배열 롤 토토에 자동으로 캐스팅됩니다.
하위 롤 토토 만 알고있는 범위 롤 토토을 선택할 방법이 없기 때문에anycompatiblerange
해당 유형으로 선언 된 모든 인수는 실제 범위 유형과 동일한 실제 범위 유형을 가지며 해당 유형의 하위 유형은 선택한 공통 유형과 일치하므로 범위 값의 캐스팅이 필요하지 않도록 요구합니다. 와 마찬가지로AnyRange
, 사용anycompatiblerange
함수 결과 롤 토토으로서가 필요합니다.anycompatiblerange
인수.
없음anycompatibleenum
타입. 이러한 유형은 일반적으로 열거 유형에 암시 적 캐스트가 없기 때문에 그다지 유용하지 않을 것입니다. 즉, 비열한 열거적인 입력에 대한 공통 유형을 해결할 방법이 없음을 의미합니다..
the“단순”및“common”다형성 패밀리는 두 개의 독립적 인 롤 토토 변수 세트를 나타냅니다. 예를 들어 고려
함수 생성 myfunc (aylement, bylement, c anycompatible, d anycompatible) 반환 할 수있는 반품 ...
이 함수의 실제 호출에서 처음 두 입력은 정확히 같은 롤 토토을 가져야합니다. 마지막 두 입력은 공통 롤 토토으로 홍보 할 수 있어야하지만이 롤 토토은 처음 두 입력의 롤 토토과 관련이 없습니다. 결과에는 마지막 두 입력의 공통 롤 토토이 있습니다.
변수 함수 (하나는 변수 수의 인수를 취하는 것과 같이섹션 37.5.5)는 다형성이 될 수 있습니다 : 이것은 마지막 매개 변수를로 선언하여 달성됩니다.variadic
AnyArray
또는variadic
anycompatiblearray
. 실제 결과 유형을 일치시키고 결정하기 위해, 그러한 함수는 적절한 숫자를 작성한 것과 동일하게 동작합니다AnynonArray
또는anycompatiblenonArray
매개 변수.
올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면