MySQLでInsertもしくはUpdate(ON DUPLICATE KEY UPDATE)
mysqlにはON DUPLICATE KEY UPDATEというのがあるらしい(mysql 4.1.0以降)。
ユニーク制約のあるカラムに、重複の値をinsertしようとすると、かわりに対象レコードがupdateされる。
MySQL 4.1 リファレンスマニュアル :: 6.4.3 INSERT 構文
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3) -> ON DUPLICATE KEY UPDATE c=c+1;
複合ユニークキーの場合も使えるようです
独立したユニークインデックスが複数はられている場合はダメっぽい。
複合UNIQUEキーでも「INSERT ... ON DUPLICATE KEY UPDATE」構文は使える
他にも似たようなものがあります
- 重複するキーがあった場合は何もしないIGNORE
INSERT IGNORE INTO table (a, b) VALUES (1, 2);
- 重複するキーがあった場合は削除してから挿入するREPLACE
REPLACE INTO (a, b) VALUES (1, 2);