SQL Server 2005-Trigger - wie man sicher, wenn durch UPDATE oder DELETE gebrannt bestimmen?

stimmen
0

Ich habe den folgenden Code in einem SQL Server 2005-Trigger:

CREATE TRIGGER [MyTrigger] ON [myTable]
FOR UPDATE, DELETE
WIE
START

DEKLARIEREN @OperationType VARCHAR (6)
IF EXISTS (SELECT 1 FROM INSERT IGNORE ED)
START
    SET @ Operation = 'Update'
ENDE
SONST
START
    SET @ Operation = 'Löschen'
ENDE

Meine Frage: Gibt es eine Situation, in der @OperationType nicht korrekt aufgefüllt? EG: Die Daten in der Tabelle wird durch ein Bündel von UPDATE / DELETE-Anweisungen geändert, aber der Auslöser nicht einmal von jedem von ihnen gefeuert?

Haben Sie einen besseren Weg, um zu bestimmen, ob der Trigger durch eine Anweisung UPDATE oder DELETE gefeuert wurde?

Veröffentlicht am 09/12/2008 um 16:53
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
4

Warum gehst du nicht schaffen nur zwei getrennte Auslöser?

CREATE TRIGGER [myUpdateTrigger] ON [myTable]
FOR UPDATE
AS
BEGIN

END

CREATE TRIGGER [myDeleteTrigger] ON [myTable]
FOR DELETE
AS
BEGIN

END
Beantwortet am 09/12/2008 um 17:00
quelle vom benutzer

stimmen
3

Einfache Antwort: Nein, es wird keine Situation, in der der Auslöser richtig erkennen kann (es sei denn, es gibt keine geänderten Zeilen).

Der Trigger wird für jede Anweisung gefeuert einmal werden, so dass die Sache ist nicht möglich , und es wird richtig funktionieren, aber der Punkt ist, wenn Sie wirklich unterschiedliche Aufgaben ausführen wollen für UPDATEund DELETE, sollten Sie besser ein paar Trigger verwenden würden.

Beantwortet am 09/12/2008 um 17:02
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more