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 件のコメント:
コメントを投稿