我只希望将对ProjectID所做的更改传递到审计表。如果例如进行了更改,但阀门保持不变,则记录不会添加到审计表中。触发器只传递审计表的实际更改
CREATE TRIGGER trgAfterUpdate ON [dbo].[Assets]
FOR UPDATE
AS
declare @assetid int;
declare @assetname nvarchar(max);
declare @projectid int;
declare @audit_action varchar(100);
select @assetid=i.AssetID from inserted i;
select @assetname=i.AssetName from inserted i;
select @projectid=i.ProjectID from inserted i;
if update(ProjectID)
set @audit_action='Updated Record -- After Update Trigger.';
insert into Asset_Test_Audit(AssetID,AssetName,Projectid,Audit_Action,Audit_Timestamp)
values(@assetid,@assetname,@projectid,@audit_action,getdate());
PRINT 'AFTER UPDATE Trigger fired.'
GO
你在哪个RDBMS上?请添加标签。 – vulkanino 2012-03-01 07:21:32
你可以使用'INSTEAD OF'触发器,因为MS SQL没有'BEFORE'触发器。 – vulkanino 2012-03-01 07:29:01