0

私はSQLサーバー2012で作業しており、データベースを持っています。

このデータベースには、2 つのテーブルがあります。リアルタイム データへのバックエンドの 1 つのテーブル。もう1つはまったく同じ構造ですが、ステージングテーブルです-リアルタイムシステムは機能していません。

ステージング テーブルに対して実行されるストアド プロシージャ/SQL ジョブに含まれる SQL クエリを作成し、リアルタイム テーブルにデータを更新/挿入したいと考えています。レコードがリアルタイム テーブルに存在する場合は更新し、存在しない場合は挿入します。ステージング テーブルは、毎日実行する必要があるときに最大 100,000 になる可能性があるため、パフォーマンス、特にリアルタイム テーブルがロックされる可能性が心配です。クエリの実行中に別のソースからリアルタイム テーブルが更新される可能性があるため、行レベルでのロックが必要になる場合があります。

プロセスと懸念事項の概要を説明しましたので、クエリを作成する際に支援をお願いします。リアルタイム テーブルのパフォーマンスに影響を与える必要はありませんが、データの転送中に各行の行を更新するシステムが他にないかどうかはわかりません。SQLでこれを行うにはどうすればよいですか?

4

1 に答える 1

1

マージが必要です:

merge into Emp2 as Target
    using emp as Source on Target.FirstName=Source.Firstname and Target.LastName=Source.lastName
    when matched then 
        update set Target.FirstName=Source.FirstName,
                        Target.LastName = Source.LastName
    when not matched then
        insert (FirstName,LastName, LastTraining) values (Source.FirstName,Source.LastName,Source.LastTraining);
于 2013-03-26T01:00:52.367 に答える