修改触发器以排除特定用户

时间:2015-03-26 17:15:03

标签: sql-server-2008 triggers

寻找有关如何修改将更改写入数据库表的触发器的一些建议。无论何时更新特定字段,它都会将记录写入审核表,详细说明更改:它是更新,哪个表,什么列,谁,何时,旧值,新值和唯一键。

问题是我们有一个在两个应用程序之间运行的接口,它也会更新此表,每次运行时,它都会在表中创建一个条目。这导致每天额外的数十万行/记录,我们只需要将审计应用于真实用户,而不是接口帐户。

我想更改此触发器,以便在用户为“RMADMIN”时,如果使用此帐户更新表,则不会触发触发器。这可能吗?我从未使用触发器。谢谢,

if( update(ActualStartTime)) 
begin 
declare @ActualStartTimeOld datetime
declare @ActualStartTimeNew datetime
select @ActualStartTimeOld = ActualStartTime from deleted
select @ActualStartTimeNew = ActualStartTime from inserted
if(@ActualStartTimeOld <> @ActualStartTimeNew)
begin
insert into auditdetail (changetype, tablename, columnname, changewho, changewhen, previousvalue, newvalue, owneruniquekey, uniquekey) 
select 'UPDATE', 'PeopleStaffingDetail', 'ActualStartTime', system_user, getdate(), cast(del.ActualStartTime as varchar(50)), cast(ins.ActualStartTime as varchar(50)), ins.uniquekey, newid() from inserted ins, deleted del where ins.uniquekey = del.uniquekey 
end 
end 

0 个答案:

没有答案