1.4k Aufrufe
Gefragt in Datenbanken von ralfh Mitglied (227 Punkte)
Hi ,
wenn ich den Trigger laufen lasse, bekomme ich das gewünschte Ergebnis, wenn die Änderung in Spalte "Name" gemacht worden ist.

Wenn ich eine Änderung in der Spalte Vorname mache, bekomme ich nur den neuen Wert.

Woran kann das liegen ?

CREATE TRIGGER [dbo].[Kunden_tru] ON [dbo].[Kunden]
WITH EXECUTE AS CALLER
FOR UPDATE
AS
DECLARE @a VARCHAR(255)
DECLARE @b VARCHAR(14)
DECLARE @c VARCHAR(14)
DECLARE @d Datetime
DECLARE @e Datetime
declare @aa varchar (90)
declare @spalte varchar(90)

IF UPDATE(Name)
set @spalte = 'Name'
SET @a = (SELECT deleted.Name FROM deleted)
SET @b = (SELECT inserted.Name FROM inserted)


IF UPDATE(Vorname)
set @spalte = 'Vorname'
SET @a = (SELECT deleted.Vorname FROM deleted)
SET @b = (SELECT inserted.Vorname FROM inserted)



SET @c = @a + ' / ' + @b
SET @d = GETDATE()
set @e = (select Aufgenommen_am from deleted)
-- set @aa = COLUMNS_UPDATED()


insert into TBL_Log_Bewegung values(@c,'Kunden',@spalte,@d,@e)
GO

2 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo RalfH,

Setze mal explizit BEGIN...END-Blöcke fü die IF-Anweisung. Dann wird schnell klar, warum es
nicht funktioniert.

Gruß
Ralf
0 Punkte
Beantwortet von ralfh Mitglied (227 Punkte)
Hallo Rahi,
Danke für den Hinweis.
...