CREATE TYPE

Cassandra 2.1以降でユーザー定義型を作成します。

Cassandra 2.1以降でユーザー定義型を作成します。

構文

CREATE TYPE IF NOT EXISTS keyspace.type_name ( field, field, ...)

type_nameは、予約されている型の名前以外の型識別子です。

fieldは、以下のとおりです。

field_name type

field_nameはそのフィールドに対する任意の識別子です。

typeはカウンター型以外の、CQLコレクション型または非コレクション型です。

構文の凡例

  • 大文字はリテラルを意味する
  • 小文字は、リテラルでないことを意味する
  • イタリック体は指定が任意であることを意味する
  • パイプ(|)記号はORまたはAND/ORを意味する
  • 省略記号(...)は繰り返し可能を意味する
  • 範囲記号「(」および「)」はリテラルではなく、範囲を示す

この構文には、CQL文の終了となるセミコロンは含まれていません。

説明

ユーザー定義型は、型を持つ1つ以上のフィールドです。ユーザー定義型を使用すると、住所情報(番地、都市、郵便番号)など互いに関連する情報を表す複数のフィールドの処理が容易になります。すでに存在している型を作成しようとすると、IF NOT EXISTSオプションを使用していない限りエラーが返されます。このオプションを使用すると、すでにその型が存在していれば、この文は何もしません。

ユーザー定義型を作成するには、CREATE TYPEコマンドを使用して、その後に型の名前とフィールドのリストを、コンマで区切って丸かっこで囲んで指定します。

ユーザー定義型の名前は、以下のような、予約されている型の名前以外の名前を選択してください。
  • byte
  • smallint
  • complex
  • enum
  • date
  • interval
  • macaddr
  • bitstring

cqlshの起動時のキースペースであるシステム・キースペース内にいる場合は、型に対するキースペースを指定する必要があります。ドット表記を使用して、その型のキースペースを指定できます。キースペース名の後にピリオドを付け、その後に型の名前を記述します。Cassandraは、指定されたキースペース内にその型を作成しますが、現在のキースペースは変更しません。キースペースを別途指定しなかった場合、Cassandraは現在のキースペース内にその型を作成します。

この例では、住所や電話番号の情報で構成されるaddressというユーザー定義型を作成します。

CREATE TYPE address ( street text, city text, zip_code int, phones set<text> )

address型を定義した後、その型のカラムを持つテーブルを作成できます。CQLのコレクション・カラムとその他のカラムでは、「ユーザー定義型の使用」に示すように、ユーザー定義型の使用がサポートされています。