読者です 読者をやめる 読者になる 読者になる

AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

MySQL: レコードがすでにあればUpdate。なければInsert

マップ配置データをサーバーに保存するにあたり、マップデータがすでにアップロードされていればUpdateし、新規であればinsertする処理を作りたい。


MySQLであればon duplicate key update機能を使う

INSERT INTO data (userid,data,datetime) VALUES(".$db->quote($userid).",".$db->quote($data).",NOW()) ON DUPLICATE KEY UPDATE userid=".$db->quote($userid).",data=".$db->quote($data).",datetime=NOW();"

同じuseridのレコードがあれば、dataとdatetimeのupdateが行われ、新規の場合は、Insertが行われる。

なお、重複チェックの対象であるuseridは、UNIQUEインデックス(かPRIMARY KEY)を指定しておく必要がある。
要するに、同じuseridのレコードは一つしかないという状態になっている。

同様な処理をするのに、以前は、まずselectしてデータがなければInsert。あればUpdateみたいなことをやっていたが、SQL発行が一回で済んで楽。


参考
qiita.com