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にリセットされます。デフォルトでは、値は期限切れになりません。カウンター・カラム内のデータに期限切れを設定することはできません。
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;
コレクション・セットまたはマップの使用
INSERT INTO users (userid, first_name, last_name, emails) VALUES('frodo', 'Frodo', 'Baggins', {'f@baggins.com', 'baggins@gmail.com'});
INSERT INTO users (userid, todo ) VALUES('frodo', {'2014-10-2 12:10' :'die' } );
コレクションの各項目の値は64Kに制限されます。
ユーザー定義型のコレクション・カラムにデータを挿入するには、「ユーザー定義型」で示すように、ユーザー定義型の構成要素を丸かっこで囲み中かっこ内に置きます。