0

SQLサーバーデータベースのテーブル「Met」をアプリケーションの新しいデータテーブルに置き換えたい。新しいテーブルの各行をループし、既存のテーブルを比較するという私の基本的な考え方。

ストアドプロシージャを使用しましたが、「挿入」機能と「更新」機能しかありません。最初に古いテーブルを削除する必要がありますか?

ありがとう

行ごとに、次のストアドプロシージャをループします。

;WITH CTE AS (SELECT skey=@skey,ProbMetID=@ProbMetID,Interval=@Interval,Counts=@Counts)
MERGE Met AS TARGET
USING CTE SOURCE
ON SOURCE.skey = TARGET.skey
WHEN MATCHED THEN
UPDATE
SET ProbMetID = SOURCE.ProbMetID,
    Interval = SOURCE.Interval,
    Counts = SOURCE.Counts,
    WHERE skey = @skey
WHEN NOT MATCHED THEN    
INSERT INTO Met(skey,ProbMetID,Interval,Counts)
VALUES(@skey,@ProbMetID,@Interval,@Counts); 
4

1 に答える 1

1

MERGEステートメントにはDELETE関数が含まれています。それに関するPinalDaveの投稿をチェックしてください:http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/

アプリ層からこれを行う最も簡単な方法は、すべてを一時テーブルに挿入してから、一時テーブルと実際のテーブルの間でMERGE操作全体を実行することです。大きな部分は、1回のトランザクションですべてを実行できることです。さらに、アプリケーションテーブルを一時テーブルに一括挿入して、非常に優れたデータベース速度(TM)を実現できます。

于 2012-06-20T20:52:31.653 に答える