¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE TYPE

Name

CREATE TYPE  --  �������ǡ����������

Synopsis

CREATE TYPE typename ( INPUT = input_function, OUTPUT = output_function
      , INTERNALLENGTH = { internallength | VARIABLE }
    [ , EXTERNALLENGTH = { externallength | VARIABLE } ]
    [ , DEFAULT = default ]
    [ , ELEMENT = element ] [ , DELIMITER = delimiter ]
    [ , SEND = send_function ] [ , RECEIVE = receive_function ]
    [ , PASSEDBYVALUE ]
    [ , ALIGNMENT = alignment ]
    [ , STORAGE = storage ]
)

����

typename

�������뷿��̾���Ǥ���

internallength

��������������Ĺ����ꤹ���ƥ���ͤǤ���

externallength

���������γ���(ɽ����)Ĺ����ꤹ���ƥ���ͤǤ���

input_function

CREATE FUNCTION �ˤ�äƺ������줿�����������Υǡ����򡢤��η������������Υǡ������Ѵ�����ؿ���̾���Ǥ���

output_function

CREATE FUNCTION �ˤ�äƺ������줿�����������ˤ��ǡ����� ɽ����Ŭ���������Υǡ������Ѵ�����ؿ���̾���Ǥ���

element

���������Τ����󷿤ǡ�������������Ǥη�����ꤷ�ޤ���

delimiter

���η��ˤ��������ͤδ֤ζ��ڤ�ʸ���Ǥ���

default

�ǡ������Υǥե�����ͤǤ����̾�Ϥ���Ͼ�ά�����Τǥǥե���Ȥ� NULL �ˤʤ�ޤ���

send_function

CREATE FUNCTION �ˤ�äƺ������줿�����η��Υǡ�����¾�Υޥ����ž���Ǥ���褦�ʷ������Ѵ�����ؿ���̾���Ǥ���

receive_function

CREATE FUNCTION �ˤ�äƺ������줿�����η��Υǡ����� ¾�Υޥ��󤫤顢����������ž���Ǥ���褦�ʷ������Ѵ�����ؿ���̾���Ǥ���

alignment

�ǡ������γ�Ǽ�������־��Ǥ������Υ��ץ���󤬻��ꤵ�줿��硢 char�� int2�� int4�ޤ���double�Ǥ���ɬ�פ�����ޤ����ǥե���Ȥ�int4�Ǥ���

storage

�ǡ������γ�Ǽ��ˡ�Ǥ������ꤹ����ϡ� plain�� external�� extended���ޤ��� 'main �Ǥʤ���Фʤ�ޤ��󡣥ǥե���Ȥ� plain �Ǥ���

����

CREATE

���κ������������������֤�����å������Ǥ���

����

CREATE TYPE��Ȥ����Ȥˤ�äơ��桼����PostgreSQL�θ��ߤΥǡ����١����ǻ��ѤǤ��롢�������桼������ǡ���������Ͽ�Ǥ��ޤ���������������桼���Ϥ��ν�ͭ�ԤȤʤ�ޤ��� typename �Ͽ���������̾���ǡ����Υǡ����١�����������줿��̾����ǰ�դǤʤ���Фʤ�ޤ���

CREATE TYPE �Ǥϡ���������������ˡ� (CREATE FUNCTION ���Ѥ���)2�Ĥδؿ�����Ͽ���Ƥ���ɬ�פ�����ޤ��� ���������ܷ���ɽ�������ϡ����γ���ɽ�������򤽤η��Ѥ�������줿�黻�Ҥȴؿ������Ѳ�ǽ������ɽ���������Ѵ����롢 input_function �Ƿ��ꤵ��ޤ��������� output_function �Ϥ��εդ��Ѵ��򤷤ޤ������ϴؿ��ϡ�1�Ĥ� opaque ���ΰ������ޤ��ϡ� opaque, OID, int4 �Ȥ���3�Ĥΰ���(�ǽ�ΰ����ϡ�C ������������ϥƥ����ȡ�2���ܤ����󷿤ξ������Ǥη���3���ܤϴ��Τξ�硢�о���� typmod �Ǥ���)��Ȥ�褦���������ޤ������ϴؿ��ϡ�1�Ĥ� opaque ���ΰ������ޤ��ϡ� opaque, OID �Ȥ��� 2 �Ĥΰ���(�ǽ�ΰ����ϼºݤϥǡ��������ȤǤ��������������ϴؿ��Ϻǽ���������ʤ���Фʤ�ޤ���Τǡ������ opaque ���Ȥ��Ƽ����դ���褦�������������ñ�Ǥ���2���ܤΰ����Ͼ��Ʊ�͡����󷿤ξ��Ρ����Ǥη��Ǥ���)��Ȥ�褦���������ޤ���

���������ܷ��� internallength �����������Ȥʤ����Ĺ�Ȥ��ƺ������뤳�Ȥ⡢ internallength ��VARIABLE �����ꤹ�뤳�ȤǼ�����롢����Ĺ�Ȥ��ƺ������뤳�Ȥ�Ǥ��ޤ���(����Ū�ˤϡ������ typlen �� -1 �����ꤹ�뤳�Ȥ�ɽ������ޤ���)���Ƥβ���Ĺ��������ɽ���ϡ������ͤ���Ĺ�򼨤������ͤ���Ϥޤ�ʤ���Фʤ�ޤ���

����ɽ��������Ʊ�ͤˤ��ơ� externallength �򥭡���ɤ���Ѥ��ƻ��ꤵ��ޤ���(�����ͤϸ��߻��Ѥ���ޤ����̾��ά���졢���Υǥե���Ȥ� VARIABLE �Ȥ��ޤ���)

��������Ǥ��뤳�Ȥ򼨤��ˤϡ� ELEMENT ������ɤ���Ѥ����������Ǥη�����ꤷ�Ʋ��������㤨�С�4 �Х�������("int4") ��������������ˤϡ�

ELEMENT = int4

�Ȼ��ꤷ�Ʋ����������ܺ٤ϡ���Ҥ����󷿤��������ޤ���

���η��ˤ������γ��������ˤ������ʹ֤ζ��ڤ�򼨤�����ˡ� delimiter �������ʸ�������ꤹ�뤳�Ȥ��Ǥ��ޤ����ǥե���Ȥζ��ڤ�ʸ���ϥ����(',')�Ǥ������ζ��ڤ�ʸ���ϡ��������Ǥη��˴ط������ΤǤ��ꡢ���󷿼��Τ˴ط������ΤǤʤ����Ȥ����դ��Ʋ�������

�桼�������Υǡ���������Υǥե���Ȥ� NULL �ʳ��β����ˤ�������硢�ǥե�����ͤ���ꤹ�뤳�Ȥ��Ǥ��ޤ������Υǥե�����ͤ� DEFAULT ������ɤǻ��ꤷ�Ʋ�������(������ˡ�Υǥե�����ͤϡ�����������Ϳ���줿������Ū�� DEFAULT ��ˤ�äƾ�񤭤�����ǽ��������ޤ���)

���ץ����ΰ��� send_function �� receive_function �ϡ����ߡ����Ѥ���Ƥ��ޤ����̾��(���줾��Υǥե���ȡ� output_function �� input_function �����ꤵ�졣)��ά����ޤ��������δؿ��Ϻ��塢�ޥ������¸�ΥХ��ʥ�ɽ������ꤹ�뤿������褹���ǽ��������ޤ���

���ץ����Υե饰 PASSEDBYVALUE �ϡ����Υǡ��������ͤϻ��ȤǤϤʤ��ͤˤ�ä��Ϥ���뤳�Ȥ򼨤��ޤ���(�ۤȤ�ɤΥޥ���Ǥ� 4 �Х��ȡ��ޤ�� 8 �Х��ȤȤʤ� ) Datum ����Ĺ������ɽ���η����ͤˤ�ä��Ϥ����Ȥ��Ǥ��ʤ����Ȥ����դ��Ʋ�������

alignment ������ɤϡ����Υǡ�������ɬ�פȤ�����Ǽ�������֤���ꤷ�ޤ��������ǽ���ͤϡ�1�Х��ȡ�2�Х��ȡ�4�Х��ȡ�8�Х��ȶ����ΰ��ֹ�碌��Ʊ���Τ��Ȥ��̣���ޤ�������Ĺ���ΰ������֤Ϻ���Ǥ� 4 ������ʤ���Фʤ�ʤ����Ȥ����դ��Ʋ��������ǽ�����ǤȤ��� int4 ������ʤ���Фʤ�ʤ�����Ǥ���

������� storage ����Ѥ��뤳�Ȥǡ�����Ĺ�ǡ��������Ǽ����ݤ���ά�����򤹤뤳�Ȥ��Ǥ��ޤ���(����Ĺ�η��ˤ� plain �Τߤ�������Ƥ��ޤ�)�� plain �ϥǡ��������Ф��� TOAST ��Ȥ��ʤ����ޤ����ǡ����Ͼ�˰���dz�Ǽ���졢���̤���ޤ��� extended �� TOAST �����Ƥε�ǽ��ͭ���ˤ��ޤ��������ƥ�Ϥޤ�Ĺ���ǡ����ͤ򰵽̤��褦�Ȥ�������Ǥ�ޤ�Ĺ�᤮������ͤ�ᥤ��ơ��֥�ιԤ��������ޤ��� external �ϥᥤ��ơ��֥뤫���ͤ������뤳�Ȥ�����ޤ����������ƥ�ϥǡ����򰵽̤��褦�Ȥ��ޤ��� main �ϥǡ����ΰ��̤�����ޤ������ͤ�ᥤ��ơ��֥뤫�������뤳�Ȥ�ߤ�ޤ���(���γ�Ǽ�᥽�åɤ���ĥǡ��������ƥ�ϡ�¾�˹Ԥ�Ŭ�礵������ˡ���ʤ����ˤϥᥤ��ơ��֥뤫��������Ƥ��ޤ����⤷��ޤ��󤬡�extended �� external �����ꤵ��Ƥ��륢���ƥ����ͥ�褷�ƥᥤ��ơ��֥�˻Ĥ���ޤ���)

����

�桼������Υǡ����������������ȡ� PostgreSQL �ϡ���ưŪ�ˡ�����̾���Ȥ��ƴ��ܷ�̾�����˥���������������դ�������Ϣ�������󷿤�������ޤ����ѡ����Ϥ���̿̾��§�����򤷡� foo[] ������ؤ��׵�� _foo ���ؤ��׵���Ѵ����ޤ������ΰ���Ū�˺�����������󷿤ϲ���Ĺ�ǡ��Ȥ߹��������ϴؿ� array_in �� array_out ����Ѥ��ޤ���

����Ū�˹ͤ���ȡ� "�����ƥब��ưŪ�����󷿤���������������ΤǤ���С� ELEMENT ���ץ����Ϥɤ�����¸�ߤ���Τ�����" ���Ի׵Ĥ˻פ��Ǥ��礦�� ELEMENT ����̣����ġ�ͣ��ξ�礬����ޤ�������ϡ�����Ū�� N �Ĥ�Ʊ��Τ�Τ�����Ȥʤꡢ����N�Ĥ��Ф��������ֹ����ꤷ��ľ�ܥ��������Ǥ�������ˡ����η����ΤȤ��ơ����餫�������Ѱդ��뤳�Ȥ�ͽ�ꤹ�롢����Ĺ�η������������Ǥ����㤨�С�name ���ϡ��������ǤǤ��� chars ���Τ�Τˤ��Τ褦�ʥ���������ˡ����Ĥ��Ƥ��ޤ���2������ point ���Ǥϡ�����2 �Ĥ���ư�������ι������Ǥ� point[0] ����� point[1] �Ȥ�������������Ԥʤ����Ȥ��Ǥ��ޤ������ε�ǽ�ϡ������������������Τ� N �Ĥ�Ʊ��Υե�����ɤ��¤ӤǤ��롢����Ĺ�η��ǤΤ�ư��ޤ��������ֹ���꤬��ǽ�ʲ���Ĺ���ϡ� array_in �� array_out ����Ѥ��ơ��Ʋ����줿����ɽ�������ɬ�פ�����ޤ������Ū����ͳ�ˤ�ꡢ����Ĺ���󷿤ؤ������ֹ����� 0 ����Ϥޤꡢ����Ĺ����ξ��� 1 ����Ϥޤ�ޤ���(��������餫�˴ְ㤤�ʤΤǤ������ѹ�����ˤ��٤����ޤ�����)

����

�桼���������̾���ϥ������������ ("_") ����Ϥ�뤳�ȤϤǤ��ޤ��󡣤ޤ���30ʸ��(�⤷���� ���̲�����ɽ���� NAMEDATALEN-2)Ĺ�ޤǤǤ���(¾��̾���ξ��� NAMEDATALEN-1 ʸ��Ĺ�ޤǵ�����ޤ���)�����������������Ϥޤ뷿̾�ϡ�����Ū�˺�����������󷿤�̾���Τ����ͽ�󤵤�Ƥ��ޤ���

��

�ʲ��Υ��ޥ�ɤϡ� box �ǡ�����������������η���ơ��֥��������ǻ��Ѥ��ޤ���

CREATE TYPE box (INTERNALLENGTH = 16,
    INPUT = my_procedure_1, OUTPUT = my_procedure_2);
CREATE TABLE myboxes (id INT4, description box);

box ��������¤����4�Ĥ� float4 ������Ǥ��ä��Ȥ���ȡ��ʲ��Τ褦�˽񤯤��Ȥ�Ǥ��ޤ���

CREATE TYPE box (INTERNALLENGTH = 16,
    INPUT = my_procedure_1, OUTPUT = my_procedure_2,
    ELEMENT = float4);

����ˤ�ꡢbox �ͤ���ư���������Ǥ������ֹ�ǥ��������Ǥ��ޤ�������¾�ϡ�����Ʊ�ͤ�ư��򤷤ޤ���

�ʲ�����ϡ��顼�����֥������ȷ�����������ơ��֥�����ˤƤ������Ѥ��ޤ���

CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout,
    INTERNALLENGTH = VARIABLE);
CREATE TABLE big_objs (id int4, obj bigobj);

�ߴ���

CREATE TYPE ���ޥ�ɤ� PostgreSQL �γ�ĥ�Ǥ���SQL99 �ˤ� CREATE TYPE ʸ�Ϥ���ޤ������ܺ٤ϰۤʤ�ޤ���

��Ϣ����

CREATE FUNCTION, DROP TYPE , PostgreSQL �ץ�����ޥ�����