• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ストアド。存在チェックをしてから登録したい。)

SQLServer2005環境で、Aテーブルの最新データをBテーブルにUpdate/Insertする方法

このQ&Aのポイント
  • SQLServer2005環境で、Aテーブルの最新データをBテーブルに効率的にUpdate/Insertする方法を紹介します。
  • Merge文を使用することはできませんが、ストアドを利用して、Aテーブルに存在しないデータをBテーブルからDeleteすることも可能です。
  • サンプルコードや解説サイトは多数存在しますので、これらを活用しながら、目的に合ったストアドを実装してください。

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

  • ベストアンサー
  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.2

UPDATE - INSERT - DELTE の順で処理し UPDATE は INNER JOIN で他は NOT EXISTS を使用する方法はいかがでしょうか。 例えば BEGIN UPDATE TableB SET TableB.Filde1 = TableA.Filde1 ・・・・・・ FROM TableB INNER JOIN TableA ON TableB.ID = TableA.ID END BEGIN INSERT INTO TableB SELECT * FROM TableA WHERE NOT EXISTS(SELECT * FROM TableB WHERE TableA.ID = TableB.ID) END BEGIN DELETE FROM TableB WHERE NOT EXISTS(SELECT * FROM TableA WHERE TableB.ID = TableA.ID) END こんな感じで。 SELECT文で確認してから実行してね!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

ストアド内で SELECT ... WITH(UPDLOCK) でデータがあるかどうか調べて処理を分岐させては。 ただし、同時実行するトランザクションがあると、上記のSELECT時点ではなかったキー値がINSERT、COMMIT時点では存在する可能性はあります。

すると、全ての回答が全文表示されます。

関連するQ&A