2009年1月26日月曜日

MySQLで INSERT時に重複する KEYが既に存在する場合の動作のオプション


INSERT IGNORE INTO ...

(効能)重複するKEYが既に存在する場合、データは登録されない
INSERT IGNORE INTO members(id, name) VALUES(2, 'TARO');


INSERT INTO ... ON DUPLICATE KEY UPDATE ...
(効能)重複するKEYが既に存在する場合、そのデータをUPDATEする
INSERT INTO members(id, name) VALUES(2, 'TARO') ON DUPLICATE KEY UPDATE cnt = cnt + 1;


REPLACE INTO ...
(効能)重複するKEYが既に存在する場合、そのデータをDELETEしてからINSERTする(※UPDATEではない)

REPLACE INTO members(id, name) VALUES(2, 'TARO');


いずれも、重複するKEYが存在しなければ普通のINSERT文と同じ結果になる。



参考:MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.3 INSERT 構文

3 件のコメント:

  1. このブログを拝見させていただきました。
    助かりました。ありがとうございます。

    返信削除
  2. お役に立てて何よりです。

    返信削除
  3. ignore検索ですぐ出てきたので、勉強させていただきました。
    ありがとうございます。

    返信削除