0
実際のデータが変更された場合にのみテーブルを更新するトリガーを作成する方法はありますか?値が実際に変更された場合にのみテーブルの更新をトリガー
以下はidu_id
またはmanager_id
が更新された場合にトリガーするトリガーが表示されます。しかし、1を1に変更したような変更を強制的に実行すると、更新されたテーブルは変更されませんが、引き続きトリガーされます。
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
これはやっているようです。ありがとう –