Ich bin ziemlich neu in T-SQL, aber ich habe eine Frage zu Triggern. Ich habe einen Auslöser geschrieben, der in meiner gespeicherten Prozedur verwendet wird, die Daten einfügt und aktualisiert.T-SQL Trigger INSERT UPDATE
nun der Auslöser funktioniert, wenn jede Zeile in der Tabelle aktualisiert wird [dbo].[users]
Ich weiß nicht, wie diese Trigger zu ändern, so dass, wenn die Daten in [dbo].[users]
Tabelle den Trigger aktivieren eingeführt wird (dies funktioniert jetzt), aber wie ein Aktualisierungsszenario für denselben Trigger zu erreichen, dass, wenn nur eine bestimmte Zeile in [dbo].[users]
Tabelle AKTUALISIERT ist, nur dann der Trigger aktiviert werden sollte.
Zum Beispiel
Wenn ein neuer Benutzer eingefügt wird und alle Zeilen in dieser Tabelle eingefügt - aktivieren Trigger
Wenn ein alter Trigger aktualisiert wird, sondern nur ein bestimmtes Feld in dieser Tabelle ist aktualisiert (working_state ist der Name einer Spalte) dann sollte nur der Trigger aktiviert werden.
Quellcode, was ich hier gezeigt:
ALTER TRIGGER [dbo].[t_temp_triger_name]
ON [dbo].[users]
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
DECLARE @working_state char(1),
@user_code char(11)
DECLARE zm CURSOR FOR
SELECT
working_state,
user_code
FROM
inserted
-- Added update statement that activates the trigger only when a specific -
-- column update is executed
UPDATE [dbo].[users]
SET working_state = 1
FROM [dbo].[users] U
INNER JOIN DELETED D ON U.user_code= D.user_code
WHERE U.working_state<> D.working_state
OPEN zm
FETCH NEXT FROM zm INTO @working_state, @user_code
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC [FNF].[dbo].[NamedProcedure]
@working_state, @user_code
FETCH NEXT FROM zm INTO @working_state, @user_code
END
CLOSE zm
DEALLOCATE zm
END
Ist es möglich, dies nur mit 1 Trigger zu erreichen? – dmxyler