2009年4月8日水曜日

MySQLのreplace構文

replace構文というのを最近知りました。

http://dev.mysql.com/doc/refman/5.1/ja/replace.html

REPLACE は、もしテーブル内の古い行が PRIMARY KEY か UNIQUE インデックスの新しい行と同じ値を持っていれば、古い行は新しい行が挿入される前に削除されるという事以外、INSERT と全く同じように機能します。


ということです。
主キーかユニークキーがあるテーブルに対して、既存レコードがある場合はupdate、レコードがない場合はinsertしてくれるというもの。

特定テーブルに対してデータの更新をする際なんか、最高に便利なんじゃないでしょうか。

自分はこういう場合、まず最初に既存レコードがあろうがなかろうが全件insertして、その後もう一度全件update、という無駄なことをやってましたが、それがこのreplace文なら一発で済むというわけです。

まだ実戦で使ってはいませんが、かなり使えそうです。

ここにも詳しく書いてありました。

http://f32.aaa.livedoor.jp/~azusa/index.php?t=mysql&p=replace

追記
INSERT ... ON DUPLICATE KEY UPDATE; というのもあるようです。
http://dev.mysql.com/doc/refman/4.1/ja/insert.html

0 件のコメント:

コメントを投稿