이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 토토 사이트 추천 생성버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

만들기 토토 캔

이름

CREATE TYPE  --  새로운 데이터 토토 캔 정의

시놉시스

토토 캔 생성유형이름( 입력 =input_function, 출력 =출력_기능, 내부 길이 =내부 길이| 변수 
    [ , 기본값 =기본값]
    [ , 요소 =요소] [ , DELIMITER =구분자]
    [ , 통과값 ]
    [ , 정렬 =정렬]
    [ , 저장용량 =저장]
)

토토 캔 생성유형이름AS
    (컬럼_이름 데이터_토토 캔 [, ... ] )

입력

유형이름

대상 유형의 이름(선택적으로 스키마 한정) 생성되었습니다.

내부 길이

내부 길이를 지정하는 리터럴 값 새로운 유형입니다.

input_function

다음에 의해 생성된 함수의 이름함수 생성, 데이터를 다음에서 변환합니다. 외부 형식을 유형의 내부 형식으로 변환합니다.

output_function

다음에 의해 생성된 함수의 이름함수 생성, 데이터를 다음에서 변환합니다. 내부 형태를 디스플레이에 적합한 형태로 변경합니다.

요소

생성되는 유형은 배열입니다. 이는 다음을 지정합니다. 배열 요소의 유형입니다.

구분자

값 사이에 사용되는 구분 문자입니다. 이 토토 캔으로 구성된 배열입니다.

기본값

데이터 유형의 기본값입니다. 일반적으로 이것은 생략되었으므로 기본값은 NULL입니다.

정렬

데이터 유형의 스토리지 정렬 요구사항입니다. 만약에 지정되어야 합니다.문자, int2, int4또는더블; 기본값은int4.

저장

데이터 유형에 대한 저장 기술. 지정한 경우, 이어야 합니다일반, 외부, 확장, 또는메인; 기본값은일반.

열_이름

복합 토토 캔의 열 이름.

데이터_토토 캔

기존 데이터 유형의 이름.

출력

토토 캔 생성

토토 캔이 성공적이면 메시지가 반환됨 생성되었습니다.

설명

토토 캔 생성사용자는 다음을 수행할 수 있습니다. 새로운 데이터 유형을 등록합니다.PostgreSQL현재 데이터베이스에서 사용됩니다. 유형을 정의하는 사용자가 소유자가 됩니다.

스키마 이름이 주어지면 유형은 지정된 스키마. 그렇지 않으면 현재 스키마에 생성됩니다. (검색 경로 앞에 있는 것; 참조)CURRENT_SCHEMA()). 유형 이름은 고유해야 합니다. 동일한 스키마에 있는 기존 유형 또는 도메인의 이름에서 가져온 것입니다. (테이블에는 연관된 데이터 유형이 있으므로 유형 이름도 동일한 스키마의 테이블 이름과 충돌하지 않습니다.)

기본 토토 캔

첫 번째 형식토토 캔 생성새 기본 토토 캔(스칼라 유형)을 생성합니다. 그것은 두 가지 함수 등록(CREATE FUNCTION 사용) 유형을 정의합니다. 새로운 기본 토토 캔의 표현은 다음과 같습니다. 에 의해 결정됨input_function, 이는 유형의 외부 표현을 연산자와 함수에서 사용할 수 있는 내부 표현 유형에 대해 정의됩니다. 당연히,출력_기능반대로 수행 변형. 입력 함수는 다음과 같이 선언될 수 있습니다. 유형의 인수 1개cstring또는 다음과 같이 세 가지 유형의 인수를 취함cstring, OID, int4. ( 첫 번째 인수는 C 문자열의 입력 텍스트이고, 두 번째 인수는 인수는 배열 토토 캔인 경우 요소 유형입니다. 세 번째는typmod의 대상 열(알려진 경우).) 다음 값을 반환해야 합니다. 데이터 유형 자체. 출력 함수는 다음과 같이 선언될 수 있습니다. 새로운 데이터 유형의 하나의 인수 또는 두 개의 인수를 취하는 것 그 중 두 번째는 유형입니다.OID. ( 두 번째 인수는 다시 배열의 배열 요소 유형입니다. 유형.) 출력 함수는 유형을 반환해야 합니다.cstring.

이 시점에서 당신은 입력과 출력 함수는 다음의 결과나 입력을 갖도록 선언될 수 있습니다. 새 유형(새 유형보다 먼저 생성되어야 하는 경우) 생성될 수 있습니다. 대답은 입력 기능이 다음과 같아야 한다는 것입니다. 먼저 생성된 다음 출력 함수, 데이터 유형이 생성됩니다.PostgreSQL먼저 입력의 반환 유형으로 새 데이터 유형의 이름 기능. 그러면 다음이 생성됩니다."쉘"토토 캔, 이는 단순히 자리표시자 항목입니다.pg_type, 입력 함수 정의 연결 쉘 유형에. 마찬가지로 출력 기능도 연결됩니다. (현재 이미 존재하는) 쉘 유형으로. 마지막으로,토토 캔 생성셸 항목을 다음으로 대체합니다. 유형 정의가 완료되면 새 유형을 사용할 수 있습니다.

참고:PostgreSQL7.3 이전 버전에서는 교체하여 쉘 유형을 생성하지 않는 것이 관례입니다. 함수의 유형 이름에 대한 전방 참조 자리 표시자 의사 유형불투명.cstring입력 및 결과도 있었습니다. 다음과 같이 선언됩니다.불투명7.3 이전. 이전 덤프 파일 로드를 지원하려면,토토 캔 생성선언된 함수를 허용합니다 사용 중불투명, 그러나 이는 NOTICE를 사용하고 함수 선언을 변경하여 올바른 토토 캔입니다.

새로운 기본 데이터 토토 캔은 고정 길이일 수 있으며, 이 경우내부 길이긍정적입니다 설정으로 표시되는 정수 또는 가변 길이내부 길이변수. (내부적으로는 다음과 같이 표현됩니다. 설정타이플렌to -1.) 내부 모든 가변 길이 유형의 표현은 다음으로 시작해야 합니다. 해당 유형 값의 전체 길이를 제공하는 정수입니다.

유형이 배열임을 나타내려면, 를 사용하는 배열 요소요소키워드. 예를 들어 4바이트 정수 배열을 정의하려면 ("int4"), 지정

요소 = int4

배열 토토 캔에 대한 자세한 내용은 아래에 나와 있습니다.

값 사이에 사용되는 구분 기호를 나타냅니다. 이 유형의 배열의 외부 표현구분자특정으로 설정할 수 있습니다. 성격. 기본 구분 기호는 쉼표(')입니다.,'). 구분 기호는 다음과 연관되어 있습니다. 배열 토토 캔 자체가 아닌 배열 요소 유형입니다.

사용자가 원하는 경우 기본값을 지정할 수 있습니다. 데이터 유형의 열은 기본적으로 NULL. 를 사용하여 기본값을 지정합니다.기본값키워드. (이러한 기본값은 명시적으로 재정의됨기본값특정 열에 연결된 절입니다.)

선택적 플래그,PASSEDBYVALUE는 이 값을 나타냅니다. 데이터 토토 캔은 참조가 아닌 값으로 전달됩니다. 참고 내부적으로 값 토토 캔을 전달할 수 없습니다. 표현이의 너비보다 깁니다.데이텀토토 캔(대부분의 시스템에서는 4바이트, 8바이트) 몇 바이트).

정렬키워드 데이터 유형에 필요한 스토리지 정렬을 지정합니다. 는 허용되는 값은 1, 2, 4 또는 8바이트 정렬과 동일합니다. 경계. 가변 길이 유형에는 반드시 를 포함하므로 최소 4개의 정렬이 필요합니다.int4첫 번째 구성요소로.

저장키워드는 허용합니다 가변 길이 데이터 유형에 대한 저장 전략 선택 (만일반다음에 대해 허용됩니다. 고정 길이 유형).일반비활성화 데이터 유형에 대한 TOAST: 항상 인라인으로 저장되며 압축되지 않았습니다.확장전체 제공 TOAST 기능: 시스템은 먼저 긴 파일을 압축하려고 시도합니다. 데이터 값이며 기본 테이블 행 밖으로 값을 이동합니다. 아직 너무 길면.외부값을 기본 테이블 밖으로 이동할 수 있지만 시스템에서는 압축을 시도하지 않습니다.메인압축은 허용하지만 이동은 권장하지 않습니다. 메인 테이블의 값. (이 저장소가 있는 데이터 항목 메서드가 없으면 여전히 메인 테이블 밖으로 이동할 수 있습니다. 행을 맞추는 다른 방법이 있지만 기본 항목에 유지됩니다. 테이블이 우선적으로 종료됨확장그리고외부항목.)

복합 토토 캔

두 번째 형태토토 캔 생성복합 토토 캔을 생성합니다. 복합 토토 캔은 열 이름 및 데이터 유형 목록입니다. 이는 본질적으로 테이블의 행 유형과 동일하지만,토토 캔 생성실제 생성이 필요하지 않습니다. 테이블에서 원하는 것은 유형을 정의하는 것뿐입니다. 에이 독립형 복합 토토 캔은 기능.

배열 토토 캔

사용자 정의 기본 데이터 토토 캔이 생성될 때마다포스트그레SQL자동으로 이름이 다음으로 구성된 연관된 배열 토토 캔을 생성합니다. 기본 토토 캔의 이름 앞에 밑줄이 추가됩니다. 파서 이 명명 규칙을 이해하고 다음 요청을 번역합니다. 유형의 열foo[]요청에 토토 캔에 대해_foo. 암시적으로 생성된 배열 토토 캔은 가변 길이이며 내장 입력 및 출력 함수array_in그리고array_out.

합리적으로 물어볼 수도 있습니다."왜 거기에 있나요? an요소옵션, 시스템이 자동으로 올바른 배열 토토 캔을 만드나요?"유일한 사용하면 유용한 경우요소은 고정 길이를 만드는 경우입니다. 내부적으로 동일한 N개의 배열인 유형 N개 사물에 액세스할 수 있도록 허용하려고 합니다. 모든 작업 외에도 구독을 통해 직접 유형 전체를 제공할 계획입니다. 예를 들어 다음을 입력하세요.이름구성요소를 허용합니다문자s에 이 방법으로 액세스할 수 있습니다. 2D유형은 두 구성요소 부동소수점을 허용할 수 있습니다. 다음과 같이 액세스할 수 있습니다.점[0]그리고점[1]. 참고로 이 시설은 내부 형식이 정확히 다음과 같은 고정 길이 유형에 대해 작동합니다. N개의 동일한 고정 길이 필드의 시퀀스입니다. 첨자 가능 가변 길이 유형에는 일반화된 내부 속성이 있어야 합니다. 에서 사용하는 표현array_in그리고array_out. 역사적인 이유로 (즉, 이것은 분명히 잘못된 것이지만 변경하기에는 너무 늦었습니다. it), 고정 길이 배열 토토 캔의 첨자는 0부터 시작합니다. 가변 길이 배열의 경우보다는 하나입니다.

참고

사용자 정의 유형 이름은 밑줄로 시작할 수 없습니다 문자("_") 길이는 62자(또는 일반적으로NAMEDATALEN-2보다는NAMEDATALEN-1문자 허용 다른 이름). 밑줄로 시작하는 유형 이름은 예약되어 있습니다. 내부적으로 생성된 배열 토토 캔 이름의 경우.

이 예는 다음을 생성합니다.상자데이터 유형 그런 다음 테이블 정의에서 유형을 사용합니다.

CREATE TYPE 상자(INTERNALLENGTH = 16,
    INPUT = my_procedure_1, OUTPUT = my_procedure_2);
CREATE TABLE myboxes(ID INT4, 설명 상자);

만약상자의 내부 구조는 4개의 배열float4s, 대신에 말하다

CREATE TYPE 상자(INTERNALLENGTH = 16,
    입력 = my_procedure_1, 출력 = my_procedure_2,
    요소 = float4);

이것은 상자 값의 구성 요소 부동 소수점이 구독을 통해 액세스됩니다. 그렇지 않으면 유형은 다음과 동일하게 동작합니다. 전에.

이 예는 대형 객체 유형을 생성하고 이를 다음에서 사용합니다. 테이블 정의:

CREATE TYPE bigobj(입력 = lo_filein, OUTPUT = lo_fileout,
    내부 길이 = 변수);
CREATE TABLE big_objs (id int4, obj bigobj);

이 예는 복합 토토 캔을 생성하고 이를 테이블에서 사용합니다 함수 정의:

CREATE TYPE compfoo AS (f1 int, f2 text);
CREATE FUNCTION getfoo()는 SETOF compfoo AS 'SELECT fooid, fooname FROM foo'를 반환합니다. LANGUAGE SQL;

호환성

이것토토 캔 생성명령은 a입니다PostgreSQL확장. 가 있습니다.토토 캔 생성SQL99의 문은 다음과 같습니다. 세부적으로는 좀 다릅니다.

또한 참조

함수 생성, 롤 토토 : 문서 : 7.3 : 드롭 타입, PostgreSQL 프로그래머 가이드