2017-01-27 3 views
1

Hier ist das Szenario.Massenaktualisierung in SQL

Ich aktualisiere mehrere Datensätze in einer Tabelle basierend auf Join-Bedingung aus einer anderen Tabelle. Ich möchte einen SP ausführen, wenn es ein Update gibt. Hier ist die SQL, die ich für das Update verwende.

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 

Ich möchte den folgenden SP für jedes Update, das passiert, aufrufen.

EXEC dbo.AddQuickEvent 

Muss ich meine über SQL-Schleife durch jeden Datensatz ändern und die SP (exec dbo.AddQuickEvent) auszuführen, die erforderlich ist, oder gibt es eine andere Möglichkeit, die andere gespeicherte Prozedur auszuführen, wenn ein Update gibt es in die Reihe.

Antwort

2

Ein Update ist ein Set-basierter Vorgang, daher ist es wahrscheinlich am besten, Datensätze nicht durchzulaufen und für jeden Datensatz einen SP aufzurufen, da dies fürchterlich ineffizient wäre.

Eine bessere Option könnte sein, zu tun, was auch immer Sie in 'AddQuickEvent' in einem Trigger für die Tabelle zu tun versuchen und mit der Menge der aktualisierten Datensätze arbeiten.

Wenn Sie in SQL arbeiten, ist es fast immer besser, in Satzoperationen zu denken, anstatt jeden Datensatz einzeln zu durchlaufen und zu verarbeiten.

+0

Vielen Dank Mike für Ihren wertvollen Vorschlag. Wenn ich mich nicht um Performance Gedanken mache, wäre das Durchlaufen des Cursors eine Option? – Naga

+0

Was möchten Sie im AddQuickEvent tun? Schleifen ist immer eine Option, nur fast immer nicht die beste. – MikeS

+0

Es gibt ziemlich viele Dinge in diesem Verfahren passiert, aber ich könnte immer den gleichen Code in den Trigger – Naga

Verwandte Themen