質問: お世話になります。 テーブルのレコード更新処理を行うプログラム上から行う場合、 update分を発行する場合とreplace(deleteしてから再度regist)する場合があります。 データーベースエンジンの仕様によるものもあると思いますが、あえてreplaceを使う利点などはありますか。 よろしくお願いいたします。
回答: replace? deleteしてinsertですよね? メリットがあるとしたら、SQLの記述が簡潔になる場合があるという位? 実行面ではトランザクション量は多くなるしデメリットの方が多いのではないでしょうか。 追記 yambejpさんの投稿を見て、replaceの存在を知ったので、調べた内容を追記しておきます。 replaceはmargeやupsertを実現するためのmysqlの拡張機能ですが、特殊な目的(※)が無い限り「INSERT ON DUPLICATE KEY UPDATE」による本来の`update or insert`で行った方がよさそうですね。 ※どのような場合にreplaceの方が適しているか思い付かないですが。 裏MySQL入門(17) 基礎編11 REPLACE or INSERT ON DUPLICATE KEY UPDATE