データあればUPDATE、なければINSERT
* MySQLでは、「INSERT INTO ~ ON DUPLICATE KEY UPDATE ~」で行う
使用上の注意
* AUTO_INCREMENT を使用しているテーブルで、「INSERT INTO ~ ON DUPLICATE KEY UPDATE ~」を使用した場合 UPDATE処理が走った場合でも、インクリメントされてしまう詳細は以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37138142.html
サンプル
CREATE TABLE文
CREATE TABLE `item` ( `id` CHAR(8) NOT NULL, `name` VARCHAR(100) NULL DEFAULT NULL, `price` INT(11) NULL DEFAULT NULL, `releasedate` DATETIME NULL DEFAULT NULL, `createdate` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, `updatedate` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ;
SQL
* ここからが本番INSERT INTO item ( id, name, price, releasedate ) VALUES ( 'X0000', 'Orange', 120, '2016-07-14' ) ON DUPLICATE KEY UPDATE id = 'X0000', name = 'Orange', price = 121, releasedate = '2016-07-14' ;
実行結果
* 1回目id name price releasedate createdate updatedate X0000 Orange 120 2016/7/14 0:00 2016/7/14 22:06 2016/7/14 22:06* 2回目(price:121に変わってる)
id name price releasedate createdate updatedate X0000 Orange 121 2016/7/14 0:00 2016/7/14 22:06 2016/7/14 22:08
参考文献
http://www.united-bears.co.jp/blog/archives/2792http://qiita.com/yadok/items/fa72e8ae1d97033be218
http://mask.hatenadiary.com/entry/2013/11/22/163748
http://qiita.com/yuzroz/items/f0eccf847b2ea42f885f