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