ALTER TYPE
ユーザー定義型を変更します。Cassandra 2.1以降。
ユーザー定義型を変更します。Cassandra 2.1以降。
構文
ALTER TYPE field_name instruction
instructionは以下のとおりです。
ALTER field_name TYPE new_type |(ADD field_name new_type)|(RENAME field_name TO field_name)( AND field_name TO field_name )...
field_nameはそのフィールドに対する任意の識別子です。
new_typeは、予約されている型の名前以外の型の識別子です。
構文の凡例
- 大文字はリテラルを意味する
- 小文字は、リテラルでないことを意味する
- イタリック体は指定が任意であることを意味する
- パイプ(|)記号はORまたはAND/ORを意味する
- 省略記号(...)は繰り返し可能を意味する
- 範囲記号「(」および「)」はリテラルではなく、範囲を示す
この構文には、CQL文の終了となるセミコロンは含まれていません。
説明
ALTER TYPEにより、以下の方法で、ユーザー定義型を変更できます。
- 既存のフィールドの型を変更する。
- 既存の型の後に新しいフィールドを追加する。
- 型で定義されたフィールドの名前を変更する。
まず、ALTER TYPEキーワードの後に、変更するユーザー定義型の名前を指定し、その後に変更の種類(ALTER、ADD、またはRENAME)を入力します。次に、以下のセクションで説明するように、必要な残りの情報を指定します。
フィールドの型の変更
フィールドの型を変更するには、そのフィールドが型の定義内にすでに存在し、その型が新しい型と互換性があることが必要です。ascii型はtextに変更できます。text(varchar)をasciiに変更することはできません。すべてのUTF8文字列がasciiであるとは限らないためです。textはBLOBに変換できます。BLOBをtextに変換することはできません。すべてのBLOBがUTF8文字列でないとは限らないためです。以下の例では、modelフィールドの型をasciiからtextに変更し、さらにBLOBに変更します。CREATE TYPE version ( model ascii, version_number int );
ALTER TYPE version ALTER model TYPE text; ALTER TYPE version ALTER model TYPE blob;
以下のカラムの型は変更できません。
- クラスター化カラム。これを変更するとディスク上で行の順序付け処理が発生するため
- インデックス付きカラム
フィールドへの型の追加
型に新しいフィールドを追加するには、ALTER TYPEとADDキーワードを使用します。
ALTER TYPE version ADD release_date timestamp;
以下の例でpoint_releaseという名前のコレクション・マップ・フィールド(リリース日と10進数指定子を表す)を追加するには、以下の構文を使用します:
ALTER TYPE version ADD point_release map<timestamp, decimal>;
型のフィールドの名前変更
ユーザー定義型のフィールド名を変更するには、RENAME old_name TO new_name構文を使用します。古い名前と新しい名前に対して、異なるキースペース・プレフィックスを使用することはできません。型のフィールド名に対して複数の変更を行うには、そのコマンドの後にAND old_name TO new_nameを追加します。
ALTER TYPE version RENAME model TO sku; ALTER TYPE version RENAME sku TO model AND version_number TO num