通过触发器更新用户值

时间:2010-11-19 13:39:22

标签: sql triggers

Name            Dept            ID
MARK             XYZ             25                      
DENIM         ABC            35            
SOLO             DEF             45

以上是我的表。在更新完成后,将执行触发器以获取旧值并将其存储在具有更新的USERID的现有日志表中,此处我的要求是执行删除操作时需要执行应该使用旧值更新相同日志表的触发器操作。当它存储在日志表中时,我在日志表中有一个USERID字段,并且应该使用日志表中的当前(删除用户ID)USERID进行更新

2 个答案:

答案 0 :(得分:1)

答案取决于身份验证模式。如果您希望由触发器写入的审核日志显示删除给定行的用户的身份,则必须在触发器范围内知道该用户的身份。可以通过两种方式识别身份:SQL引擎本身可以知道已经过身份验证的用户,或者前端客户端软件可以将用户名传递给处理删除的存储过程。如果是后者,则存储过程必须在删除行之前使用当前用户值更新基表中的行。

通常情况下,许多真实的个人将单独通过客户端软件(或网络)进行身份验证,但与SQL引擎的连接是通过可能对应于权限级别的共享伪用户(例如,文书 - 用户,经理用户)。数据库看到记录由“clericaluser”而不是“joe”更新。因此,数据库身份验证可能不足以进行审计,您需要将“joe”传递给存储过程。

SQL引擎可以(但不一定)与网络身份验证集成,在这种情况下,触发器可以访问经过身份验证的用户身份,例如, YOURDOMAIN \ YourUser。

答案 1 :(得分:0)

猜猜你会在这里找到你想要的东西(?): http://technet.microsoft.com/en-us/library/ms189799.aspx