hallo zusammen,
derzeit suche ich nach einer Möglichkeit, wie man unter MSSQL einen Trigger laufen lässt, wenn sich nur ein bestimmtes Feld ändert.
Unter ORACLE gibt es ja ein BEFORE Präfix, der mir hier wahnsinnig helfen würde, aber unter MSSQL nicht exisitert. Leider feuern die Trigger unter MSSQL aber direkt nach einem UPDATE oder INSERT. Ich benötige aber den Wert vor dem UPDATE (was in SQL nicht anderes ist als ein delete mit anschließendem insert), um diesen mit dem neuen zu vergleichen.
Folgendes Script funktioniert leider nicht.
hat jemand eine Idee?
VG
Robert
derzeit suche ich nach einer Möglichkeit, wie man unter MSSQL einen Trigger laufen lässt, wenn sich nur ein bestimmtes Feld ändert.
Unter ORACLE gibt es ja ein BEFORE Präfix, der mir hier wahnsinnig helfen würde, aber unter MSSQL nicht exisitert. Leider feuern die Trigger unter MSSQL aber direkt nach einem UPDATE oder INSERT. Ich benötige aber den Wert vor dem UPDATE (was in SQL nicht anderes ist als ein delete mit anschließendem insert), um diesen mit dem neuen zu vergleichen.
Folgendes Script funktioniert leider nicht.
Code:
ALTER TRIGGER [dbo].[CreateLieferhistory]
ON [dbo].[VORGPOS]
AFTER UPDATE
AS
BEGIN
declare @delZusatzNr1 varchar(50), @insZusatzNr1 varchar(50)
set @delZusatzNr1 = (select ZUSATZNR1 from deleted)
set @insZusatzNr1 = (select ZUSATZNR1 from inserted)
if (@delZusatzNr1 <> @insZusatzNr1)
begin
SET NOCOUNT ON;
INSERT INTO [VORGPOS_LIEFERHISTORY]
(ROWVORGANG,
ROWVORGANGPOS,
EDITDATE,
LIEFERTERMIN)
SELECT
ROWVORGANG,
ROWVORGANGPOS,
GETDATE(),
ZUSATZNR2
from INSERTED
END
end
hat jemand eine Idee?
VG
Robert