[MSSQL] Trigger soll feuern, wenn sich nur ein Feld ändert

rrobbyy

Mitglied
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.


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
 
Zurück