Gibt es eine Möglichkeit, einen Trigger zu erstellen, der die Tabelle nur aktualisiert, wenn die tatsächlichen Daten geändert wurden?Aktualisierung einer Tabelle nur auslösen, wenn der Wert tatsächlich geändert wurde
Unten sehen Sie meinen Trigger, der ausgelöst wird, wenn idu_id
oder manager_id
aktualisiert wird. Wenn Sie jedoch erzwingen, dass die Änderung wie 1 in 1 geändert wird, wird sie dennoch ausgelöst, obwohl die aktualisierte Tabelle unverändert bleibt.
ALTER TRIGGER [dbo].[TRG_UpdatePersonal]
ON [dbo].[HC_EMP]
FOR UPDATE AS IF (UPDATE([manager_id]) OR UPDATE([idu_id]))
DECLARE @user_login VARCHAR(50)
DECLARE @Action varchar (10)
SELECT @user_login = dbo.udf_GetUserLogin()
BEGIN
IF UPDATE (idu_id)
Insert into [dbo].[HC_HISTORY]
(
[EmpID]
,[ACTIONDATE]
,[TYPEID]
,[MESSAGE]
,[InitiatorID]
,[OldIdu]
,[NewIdu]
)
select
d.[company_id]
,GETUTCDATE()
,3
,'Some Data'
,@user_login
,d.idu_id
,i.idu_id
from Deleted d join INSERTED i on d.company_id = i.company_id
IF UPDATE (manager_id)
Insert into [dbo].[HC_HISTORY]
(
[EmpID]
,[ACTIONDATE]
,[TYPEID]
,[MESSAGE]
,[InitiatorID]
,[OldManagerId]
,[NewManagerId]
)
select
d.[company_id]
,GETUTCDATE()
,4
,'Some Other Data'
,@user_login
,d.manager_id
,i.manager_id
from Deleted d join INSERTED i on d.company_id = i.company_id
END
Das scheint den Trick zu tun. Vielen Dank –