最近,我在我正在处理的服务器上遇到了一个特定的SQL Server用户帐户,该帐户可以执行不会触发触发器的查询。在不同用户下执行的相同查询会按预期触发触发器。
我使用相关用户检查了sys.triggers表,并且它们都已启用。
SQL Server中是否有某个设置可以防止针对特定用户帐户触发触发器?
答案 0 :(得分:0)
没有可以激活的设置或旋钮,因此触发器不会为少数用户触发。您需要一些自定义逻辑
这可以通过使用 Return statemnt并使用 SUSER_SNAME()
检查用户名来实现create trigger trg_test2
on dbo.test2
after insert
as
Begin
if ( suser_Sname()='mike')
Begin
return
END
insert into dbo.test3
select * from inserted
end
--test2 has trigger which inserts into test3
insert into dbo.test2
select 1
select * from test2
select * from test3--Table 3 wont have any data if username is mike