10.4 データ入力と変更
VOLATILEテーブルのINSERT、重複キー更新、DELETEを、実行可能な例で説明します。
データ入力と更新
次の例は、最後のクリーンアップ文まで順に実行できます。
最新状態のように同じキーの値を継続的に更新する場合は、PRIMARY KEYを定義し、ON DUPLICATE KEY UPDATEを使用します。
CREATE VOLATILE TABLE ch10_mutation (
id INTEGER PRIMARY KEY,
direction VARCHAR(10),
refcnt INTEGER
);
INSERT INTO ch10_mutation VALUES (1, 'west', 0);
INSERT INTO ch10_mutation VALUES (2, 'east', 0);
INSERT INTO ch10_mutation VALUES (1, 'south', 0)
ON DUPLICATE KEY UPDATE;
INSERT INTO ch10_mutation VALUES (1, 'south', 0)
ON DUPLICATE KEY UPDATE SET refcnt = 1;
SELECT * FROM ch10_mutation ORDER BY id;重複キーがなければ新しい行を挿入します。重複キーがある場合、SET句のない構文は入力値で行全体を更新し、
SET句のある構文は指定した列だけを更新します。PRIMARY KEY自体は更新対象に指定できません。
大量取り込みAPIの初期化・バインド・エラー処理は、言語とドライバーによって異なります。 不完全なコード断片をコピーせず、SDKと連携の該当ドライバーの例を使用してください。
条件付き更新
既存行の一部の列だけを変更する場合はUPDATEを使用します。
INSERT ... ON DUPLICATE KEY UPDATEが「なければ挿入し、あれば更新する」のに対し、
UPDATEは対象行が存在する場合だけ値を変更します。
VOLATILEテーブルのUPDATEにはWHEREが必要です。
条件は削除と同様にPRIMARY KEY = 値の形式のみサポートし、他の列の条件や複合条件は使用できません。
WHEREを省略した全件更新もサポートしていません。
UPDATE ch10_mutation SET refcnt = refcnt + 1 WHERE id = 2;
SELECT * FROM ch10_mutation ORDER BY id;SET句にPRIMARY KEY列は指定できません。
キーを変更する場合は、既存行を削除して新しいキーで再入力します。
データの削除
条件付き削除はPRIMARY KEY = 値の形式のみサポートします。
他の列の条件や複合条件は使用できません。
DELETE FROM ch10_mutation WHERE id = 2;
SELECT * FROM ch10_mutation ORDER BY id;
DROP TABLE ch10_mutation;テーブル定義を保持したまま全行を削除するには、DELETE FROM テーブル名のようにWHEREを省略します。
スキーマも初期化する場合は、DROP後に再作成します。
サーバーを再起動するとデータだけが消え、テーブル定義は残るため、再作成ではなく再ロードのスクリプトを別途管理します。