コンテンツにスキップ

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後に再作成します。 サーバーを再起動するとデータだけが消え、テーブル定義は残るため、再作成ではなく再ロードのスクリプトを別途管理します。

最終更新日