2017-01-27 12 views
1

ここにシナリオがあります。SQLでの一括更新

異なるテーブルの結合条件に基づいて、テーブル内の複数のレコードを更新しています。私は更新があるときにSPを実行したいと思います。ここでは、私が更新に使用しているSQLを示します。

Update ep 
    Set ep.AddressEMail = mail 
FROM SampleTable Samp 
    Inner Join Emp ec 
On ec.EecEmpNo = Samp.employeeid 
    Inner Join Emp ep 
on ep.EEID = ec.EecEEID 
    Where ep.AddressEMail <> mail 

私は起こっているすべてのアップデートに対して次のSPを呼びたいと思います。

EXEC dbo.AddQuickEvent 

は、更新があった場合、私はすべてのレコードをループするために、私の上記のSQLを変更して、必要なまたはその他のストアドプロシージャを実行するための他の方法がありますされている(EXEC dbo.AddQuickEvent)SPを実行する必要がありますか行に

答えて

2

更新はセットベースの操作なので、レコードをループして各レコードのSPを呼び出すのは恐ろしく効率的ではない方がいいでしょう。

テーブルのトリガーで 'AddQuickEvent'で何をしようとしているのかを確認し、更新されたレコードのセットを操作する方がよい場合があります。

SQLで操作するときは、各レコードを個別にループしたり処理したりするのではなく、セット操作の観点から考えるのが賢明です。

+0

貴重な提案をいただきありがとうございます。私がperformaceを心配していないなら、カーソルをループすることはオプションになるでしょうか? – Naga

+0

AddQuickEventで何をしようとしていますか?ルーピングは常にオプションであり、ほとんど常に最良のものではありません。 – MikeS

+0

その手順ではほとんど起こっていないことがありますが、私はいつも同じコードをトリガーにコピーすることができます – Naga

関連する問題