CREATE TYPE typename ( INPUT = input_function , OUTPUT = output_function , INTERNALLENGTH = (internallength | VARIABLE) [ , EXTERNALLENGTH = (externallength | VARIABLE) ] [ , ELEMENT = element ] [ , DELIMITER = delimiter ] [ , DEFAULT = "default" ] [ , SEND = send_function ] [ , RECEIVE = receive_function ] [ , PASSEDBYVALUE ] )
作成される型の名前です。
新しい型の内部長を指定するリテラル値です。
新しい型の外部長を指定するリテラル値です。
CREATE FUNCTION によって作成された、外部形式のデータを、 その型の内部形式のデータに変換する関数の名前です。
CREATE FUNCTION によって作成された、内部形式によるデータを 表示に適した形式のデータに変換する関数の名前です。
作成されるのは配列型で、その配列の要素の型を指定します。
その配列のデリミタ文字です。
"data not present" (データがありません)という表示をする デフォルトのテキストです。
CREATE FUNCTION によって作成された、この型のデータを 他のマシンに転送できるような形式に変換する関数の名前です。
CREATE FUNCTION によって作成された、この型のデータを 他のマシンから、内部形式に転送できるような形式に変換する 関数の名前です。
CREATE TYPE はユーザが Postgres に、 指定したデータベースで使用する新しいユーザ定義のデータ型を 登録します。 型を定義したユーザはその所有者となります。 typename は 新しい型の名前で、そのデータベースに定義された型名の中で 一意でなければなりません。
CREATE TYPE は、型を定義する前に、 (CREATE FUNCTION を用いて)二つの関数を登録する必要があります。 新しい基本型の表現は input_function で決定され、型の外部表現を、その型に対して定義された演算子と 関数が使用可能となる内部表現に変換されます。当然、 output_function は 逆変換を実行します。入力と出力の関数は共に、型 "opaque" の一つまたは二つの引数を取るように 宣言されなければなりません。
新しい基本型は、固定長の場合 internallength が 正の整数で、可変長の場合はその新しい型が Postgres が提供する データ型 "text" と同じ形式であると Postgres は推定します。 型が可変長であることを示すには、 internallength を VARIABLE に設定します。 その外部表現は、 externallength キーワードを使用して同じように指定されます。
型が配列であり、型が配列要素を持っていることを示すには、 ELEMENT キーワードを使用して配列要素の型を指定します。 例えば、4 バイト整数 ("int4") の配列を定義するには
ELEMENT = int4を指定 します。
この型の配列に使用するデリミタを示すには、 delimiter で 特定の文字を設定します。デフォルトのデリミタはコンマ (",") です。
ユーザが "data not present" (データがありませんの表示)を意味する 特定のビットパターンを望むのであれば、デフォルト値をオプションで 指定することが出来ます。 DEFAULT キーワードでデフォルトを指定します。
アプリケーションプログラムが、Postgres サービスが別のマシン 上で動いている事を想定している場合、オプションの関数、 send_function および receive_function を使用します。この場合、Postgres が動いているマシンは、 遠隔マシンで使用されているものと異なる型形式を使用することが できます。そして、サーバからクライアントに送る時はデータ項目を 標準形式に変換し、クライアントからサーバがデータを受け取る時 は、標準形式からマシン固有の形式に変換することが適切な処理 です。これらの関数が指定されていない場合、すべてのこの件に 関連したマシンのアーキテクチャが、その型の内部形式を認識できる と推測します。例えば、他の多くの型では必要とされる、Sun-4 から DECstation に送られる一文字は変換される必要がありません。
オプションのフラグ、PASSEDBYVALUE は、 引数が参照によってではなく、値として渡されなければならない データ型を使用する演算子と関数であることを示します。 内部表現が 4 バイト以上の値の型を渡してはならないことに 注意して下さい。
新しい基本型に対し、ユーザはこの節で記述した適切な手法で 演算子、関数および集約を定義することができます。
このコマンドはボックスデータ型を作成し、その型をクラス 定義の中で使用します:
CREATE TYPE box (INTERNALLENGTH = 8, INPUT = my_procedure_1, OUTPUT = my_procedure_2); CREATE TABLE myboxes (id INT4, description box);
このコマンドは整数要素を持つ可変長配列型を作成します:
CREATE TYPE int4array (INPUT = array_in, OUTPUT = array_out, INTERNALLENGTH = VARIABLE, ELEMENT = int4); CREATE TABLE myarrays (id int4, numbers int4array);
このコマンドはラージオブジェクト型を作成し、その型をクラス 定義の中で使用します:
CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout, INTERNALLENGTH = VARIABLE); CREATE TABLE big_objs (id int4, obj bigobj);