• ベストアンサー

delete⇒insert

web開発の現場にて、 既存データの更新処理を行うとき、 (1)update (2)delete⇒insert というように2パターンを見かけます。 (1)と(2)の違いあるのでしょうか、 また、どのような場面においてどちらを使用したほうがいい など教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>(1)update >(2)delete⇒insert (1)の方がオーバーヘッドが少ないですね。 とくにプライマリキーをベースに更新する場合などは効率的です。 SQL文も1文で済みますし。 私見ですが、SQLにおけるDELETEはよほどのことがない限りやらない方が よいでしょう。 実際の運用上では・・・ (3)古いデータに削除フラグをたて、あたらしいデータを追加する (4)カンター用の削除データを新たに立て、追加データを追加する というのが妥当な使い方で、履歴性が増します。 また単にUPDATEをするより、 (5)INSERT IGNOREしてからUPDATEをかける (6)REPLACEをつかう などの運用方法もありますのでいろいろ学習してみるとよいでしょう

kadai1800
質問者

お礼

よくわかりました! ご丁寧にいつも どうもありがとうございます。

その他の回答 (1)

  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.2

データベースに対して何回アクションを起こすのか、 ということを考えてみてください。 (1)は、一度のアクションで更新ができますが、 (2)は、データベースからレコードを削除し、 新しいレコードの領域を確保したあとでレコードが追加されます。 恐らく、物理的な削除を表すのではなく、論理的な削除を表して いるものと思います。 論理的な削除とは、例えば削除フラグによる無効状態を表現する 方法です。いわゆる時間管理であるとか履歴管理なんかに用います。

kadai1800
質問者

お礼

どうもありがとうございました。

関連するQ&A