이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 토토 사이트 추천 생성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

생성 토토 캔

이름

토토 캔 생성-새 데이터 토토 캔 정의

시놉시스

토토 캔 만들기typename(입력 =input_function, output =output_function, Internallength =Internallength| 변수
    [, default =기본값]
    [, 요소 =요소] [, delimiter =Delimiter]
    [, PassedByvalue]
    [, 정렬 =정렬]
    [, Storage =스토리지]
))

토토 캔 만들기typenameas
    (column_name data_type[, ...])

입력

typename

유형의 이름 (선택적으로 스키마 자격) 생성.

Internallength

내부 길이를 지정하는 문자 값 새로운 토토 캔의.

input_function

기능 만들기, 데이터를 변환합니다 토토 캔의 내부 양식에 대한 외부 양식.

output_function

함수의 이름,기능 만들기12201_12289

요소

생성중인 유형은 배열입니다. 이것은 그것을 지정합니다 배열 요소의 유형.

Delimiter

값 사이에 사용될 분리기 문자 이 토토 캔으로 만든 배열.

기본

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

정렬

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

스토리지

데이터 유형의 스토리지 기술. 지정된 경우 해야 됨일반, 외부, 확장또는Main; 기본값은일반.

column_name

복합 토토 캔의 열의 이름.

data_type

기존 데이터 유형의 이름.

출력

토토 캔 만들기

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

설명

토토 캔 만들기사용자는 허용합니다 에 새 데이터 토토 캔 등록PostgreSQL현재 데이터베이스에 사용하려면. 유형을 정의하는 사용자는 소유자가됩니다.

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

기본 유형

첫 번째 형태토토 캔 만들기새 기본 유형 (스칼라 유형)을 만듭니다. 필요합니다 이전에 두 기능을 등록했습니다 (생성 기능 사용) 유형 정의. 새로운 기본 유형의 표현은 다음과 같습니다 결정input_function, 유형의 외부 표현을 An로 변환합니다 연산자 및 기능이 사용할 수있는 내부 표현 유형에 대해 정의되었습니다. 당연히,output_function반대를 수행합니다 변환. 입력 함수는 복용으로 선언 될 수 있습니다 유형의 하나의 주장cstring또는 as 유형의 세 가지 논쟁cstring, OID, int4. (그만큼 첫 번째 인수는 C 문자열로 입력 텍스트, 두 번째 인수는 인수는 이것이 배열 토토 캔 인 경우 요소 유형입니다. 세 번째는typmod의 알려진 경우 대상 열.) 값을 반환해야합니다. 데이터 유형 자체. 출력 함수는 복용으로 선언 될 수 있습니다 새로운 데이터 유형의 한 가지 인수 또는 두 가지 인수를 취하는 것 두 번째는 유형입니다OID. (그만큼 두 번째 인수는 다시 배열의 배열 요소 유형입니다. 유형) 출력 함수는 유형을 반환해야합니다cstring.

이 시점에서 입력과 출력 함수는 결과 또는 입력이 있다고 선언 할 수 있습니다. 새로운 유형, 새로운 유형 앞에서 만들어야 할 때 만들 수 있습니다. 대답은 입력 함수가되어야한다는 것입니다 먼저 생성 된 다음 출력 함수, 데이터 유형을 작성했습니다.PostgreSQL먼저 볼 것입니다 입력의 리턴 유형으로 새 데이터 유형의 이름 기능. 생성됩니다."쉘"토토 캔, 이것은 단순히 자리 표시 자 항목입니다pg_type및 입력 함수 정의를 연결하십시오 쉘 유형에. 마찬가지로 출력 기능이 연결됩니다 (현재 이미 존재하는) 쉘 유형에. 마지막으로,토토 캔 만들기쉘 항목을 a로 대체합니다 완전한 토토 캔 정의 및 새로운 토토 캔을 사용할 수 있습니다.

참고 :inPostgreSQL7.3 이전 버전 대체하여 쉘 유형을 생성하지 않도록 관례 함수의 이름에 대한 전방 참조 자리 표시 자 의사 유형opaque. 그만큼cstring입력 및 결과도 있습니다 로 선언 됨opaque7.3 이전. 오래된 덤프 파일의로드를 지원하려면토토 캔 만들기선언 된 기능을 수락합니다 사용opaque그러나 발행됩니다 사용하도록 함수의 선언을 통지하고 변경하십시오 올바른 토토 캔.

새로운 기본 데이터 유형은 길이가 고정 될 수 있으며,이 경우Internallength는 긍정적입니다 정수 또는 가변 길이는 설정으로 표시Internallengthtovariable. (내부적으로 이것은 다음으로 표시됩니다 환경Typlen-1.) 내부 모든 가변 길이 토토 캔의 표현은 an으로 시작해야합니다 이 토토 캔 의이 값의 총 길이를 제공하는 정수.

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

요소 = int4

배열 토토 캔에 대한 자세한 내용은 아래에 나타납니다.

이 유형의 배열의 외부 표현,Delimiter특정로 설정할 수 있습니다 성격. 기본 구분 기호는 쉼표입니다 ( ','). 구분자는 관련되어 있습니다 배열 토토 캔 자체가 아닌 배열 요소 유형.

사용자가 원하는 경우 기본값을 지정할 수 있습니다. 데이터 유형의 열을 기본적으로 기본적으로 널. 에 기본값을 지정합니다.기본값키워드. (그러한 기본값은있을 수 있습니다 명시 적으로 우선기본값조항이 특정 열에 첨부되어 있습니다.)

19999_20020PassedByvalue는이 값을 나타냅니다 데이터 토토 캔은 참조가 아닌 값으로 전달됩니다. 메모 내부의 가치 토토 캔을 통과하지 못할 수도 있습니다. 표현은의 너비보다 길다Datum타입 (대부분의 기계에 4 바이트, 8 개 몇 바이트).

the정렬키워드 데이터 유형에 필요한 스토리지 정렬을 지정합니다. 그만큼 허용 값은 1, 2, 4 또는 8 바이트에 정렬되는 것과 동일합니다. 경계. 가변 길이 유형에는 an이 있어야합니다 반드시 an을 포함하기 때문에 4 개 이상의 정렬int4첫 번째 구성 요소로

the스토리지키워드 허용 가변 길이 데이터 유형에 대한 스토리지 전략 선택 (오직일반고정 길이 토토 캔).일반비활성화 데이터 토토 캔에 대한 토스트 : 항상 인라인으로 저장되고 압축되지 않습니다.확장가득 토스트 기능 : 시스템은 먼저 긴 압축을 시도합니다. 데이터 값 및 메인 테이블 행에서 값을 이동합니다. 아직 너무 길다면.외부값을 메인 테이블에서 옮길 수 있지만 시스템은 압축을 시도하지 않습니다.Main압축을 허용하지만 이동을 권장하지 않습니다 메인 테이블의 값. (이 스토리지의 데이터 항목 메인 테이블에서 메인 테이블 밖으로 이동할 수 있습니다. 행을 맞추는 다른 방법이지만 메인에 보관됩니다. 우선적으로 테이블확장and외부품목.)

복합 토토 캔

두 번째 형태토토 캔 만들기복합 토토 캔을 만듭니다. 복합 토토 캔은 a로 지정됩니다 열 이름 및 데이터 유형 목록. 이것은 본질적으로입니다 테이블의 행 유형과 동일하지만 사용토토 캔 만들기실제를 생성 할 필요가 없습니다 원하는 모든 것이 유형을 정의하는 것입니다. 에이 독립형 복합 토토 캔은 a의 반환 유형으로 유용합니다. 기능.

배열 토토 캔

사용자 정의 기본 데이터 유형이 생성 될 때마다PostgreSQL자동으로 관련 배열 토토 캔을 만듭니다. 기본 유형의 이름은 밑줄로 선정되었습니다. 파서 이 이름 지정 규칙을 이해하고 요청을 번역합니다 유형의 열foo []요청으로 토토 캔_foo. 암시 적으로 만들어졌습니다 배열 토토 캔은 가변 길이이며 내장 입력을 사용하고 출력 기능array_inandArray_out.

23121_23148"왜 거기에 있습니다요소시스템 인 경우 옵션 올바른 배열 토토 캔을 자동으로 만듭니다? "사용하는 것이 유용한 경우요소고정 길이를 만들 때입니다 내부적으로 N 배열이 동일하게 발생하는 토토 캔 사물, 그리고 당신은 N 물건에 액세스 할 수 있도록하고 싶습니다. 모든 작업 외에도 구독으로 직접 당신은 전체적으로 토토 캔을 제공 할 계획입니다. 예를 들어, type이름그 구성 요소 허용chars에 액세스 할 수 있습니다. 2-D포인트유형은 두 구성 요소가 플로트를 허용 할 수 있습니다 액세스 됨포인트 [0]and포인트 [1]. 이 시설 만 가능합니다 내부 양식이 정확히 N 동일한 고정 길이 필드의 시퀀스. 구독 가능 가변 길이 유형에는 일반화 된 내부가 있어야합니다 에 의해 사용 된 표현array_inandarray_out. 역사적 이유로 (즉, 이것은 분명히 잘못되었지만 변경하기에는 너무 늦었습니다. IT), 고정 길이 배열 토토 캔의 위시가 0부터 시작됩니다. 가변 길이 배열과 같은 하나보다는 대신.

노트

사용자 정의 유형 이름은 밑줄에서 시작할 수 없습니다 성격 ("_") 길이는 62 자일 수 있습니다 (또는 일반적으로paminatalen-2가 아니라 그만큼paminatalen-1문자 허용 다른 이름). 밑줄로 시작하는 유형 이름이 예약되어 있습니다 내부적으로 만들어진 배열 토토 캔 이름의 경우.

예제

이 예제는를 만듭니다.Box데이터 유형 그런 다음 테이블 정의에서 유형을 사용합니다.

유형 상자 생성 (Internallength = 16,
    입력 = my_procedure_1, output = my_procedure_2);
테이블 작성 mybox (id int4, description box);

ifBox의 내부 구조는 4 개의 배열float4s 대신 말하다

유형 상자 생성 (Internallength = 16,
    입력 = my_procedure_1, output = my_procedure_2,
    요소 = float4);

박스 값의 구성 요소가 구독으로 액세스. 그렇지 않으면 유형이 동일하게 동작합니다 전에.

이 예제는 큰 객체 유형을 생성하고 테이블 정의 :

토토 캔 생성 bigobj (input = lo_filein, output = lo_fileout,
    내부 길이 = 변수);
테이블 big_objs (id int4, obj bigobj); 생성

이 예제는 복합 토토 캔을 생성하고 테이블에 사용합니다. 기능 정의 :

유형 compfoo 생성 (f1 int, f2 text);
function getfoo () sets sets sets of compfoo 'food, foom from foo'language sql;로 sets sets를 반환합니다.

호환성

this토토 캔 만들기명령은 APostgreSQL확장.토토 캔 생성SQL99의 명령문 다소 세부적으로 다릅니다.

참조

기능 생성, 롤 토토 : 문서 : 7.3 : 드롭 타입, PostgreSQL 프로그래머 안내서