INSERT

カラムを追加または更新します。

カラムを追加または更新します。

構文

INSERT INTO keyspace_name.table_name ( identifier, column_name...) VALUES ( value, value ...) IF NOT EXISTS USING option AND option

valueは以下のいずれかです。

  • リテラル
  • セット
    { literal, literal, . . . }
  • リスト
    [ literal, literal, . . . ]
  • マップ・コレクション、つまりJSON形式のリテラル配列
    { literal :literal, literal :literal, . . . }

optionは以下のいずれかです。

  • TIMESTAMP microseconds
  • TTL seconds

構文の凡例

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

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

説明

INSERTは、アトミックかつ個別に、Cassandraテーブルのレコードに1つ以上のカラムを書き込みます。結果は返されません。キーを構成するカラムを除き、すべてのカラムを指定する必要はありません。指定しなかったカラムは、ディスク上のスペースを占有しません。

カラムが存在する場合は更新されます。行が存在していなければ行が作成されます。行が存在しない場合のみ挿入を行うには、IF NOT EXISTSを使用します。IF NOT EXISTSを使用すると、内部的なPaxosの使用に関連するパフォーマンスの低下を招きます。Paxosの詳細については、Cassandra 3.0のドキュメントを参照してください。

テーブル名は、キースペースで修飾できます。INSERTはカウンターをサポートしませんが、UPDATEはサポートします。内部的には、挿入操作と更新操作は同じです。

TIMESTAMPとTTLの指定

  • Time-to-live(TTL)は秒単位です
  • Timestampはミリ秒単位です
INSERT INTO Hollywood.NerdMovies (user_uuid, fan) VALUES (cfd66ccc-d857-4e90-b1e5-df98a3d40cd6, 'johndoe') USING TTL 86400;

TTLの指定は秒単位です。要求された時間が経過すると、TTLカラムの値に自動的に削除済みのマーク(トゥームストーン)が付きます。TTLは、カラム自体にではなく、挿入された値に期限を設定します。カラムのその後の更新で、TTLは更新で指定されたTTLにリセットされます。デフォルトでは、値は期限切れになりません。カウンター・カラム内のデータに期限切れを設定することはできません。

TIMESTAMPの指定はミリ秒単位です。指定がなかった場合、カラムに対して発生した書き込みの時刻(ミリ秒単位)が使用されます。
INSERT INTO cycling.calendar (race_id, race_name, race_start_date, race_end_date) VALUES (200, 'placeholder', '2015-05-27', '2015-05-27') USING TIMESTAMP 123456789;
注: IF NOT EXISTSとUSING TIMESTAMPを同時に使用することはできません。

コレクション・セットまたはマップの使用

コレクションにデータを挿入するには、値を中かっこで囲みます。設定した値は一意である必要があります。例:
INSERT INTO users (userid, first_name, last_name, emails) VALUES('frodo', 'Frodo', 'Baggins', {'f@baggins.com', 'baggins@gmail.com'});
todoという名前を付けたマップを挿入して、ユーザーのfrodoに10月2日に'die'というリマインダーを挿入します。
INSERT INTO users (userid, todo ) VALUES('frodo', {'2014-10-2 12:10' :'die' } );

コレクションの各項目の値は64Kに制限されます。

ユーザー定義型のコレクション・カラムにデータを挿入するには、「ユーザー定義型」で示すように、ユーザー定義型の構成要素を丸かっこで囲み中かっこ内に置きます。