2007年7月30日月曜日

INSERT&DELETEの代わりにREPLACE

 SQLでデータを登録する時、既に該当データがあればUPDATE、無ければINSERTしたいということがよくある。こういう場合の対応方法は2つある。

  • まずSELECTして存在するかどうか判断し、あればUPDATE、無ければINSERTする
  • まずDELETEし、それからINSERTする (該当データが無ければDELETEは空振りに終わる)
 後者の方が処理がすっきりして好きだが、仕様によっては前者でなければいけないこともある。(あまり無いけど。)

 で、MySQLならこのDELETE&INSERTを一発でできることを最近知った。

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.4.7 REPLACE 構文

 ちょっと便利かも。UPDATE or INSERTだったらもっと良かったのに。さすが無茶するMySQLといったところか。mysql_affected_rows()で2を返す(DELETE1行+INSERT1行)というのがトリッキーな匂いがしていいね。

0 件のコメント:

ブログ アーカイブ

tags