2011-03-21 29 views
1

我有一个sql触发器用于审计我的数据库表。 通过网络界面更改数据。只有经过认证的用户才能更改/添加数据。SQL触发器 - 用自定义字段替换系统用户

在触发我有一个行代码,说

select @UserName = system_user 

取而代之的system_user,我想UserId被分配到@UserName(经认证的网络用户)。 在表中找到每个行的UserId作为其中一列。

我可以用什么替换system_user来获得这种效果。提前致谢。

+0

你需要告诉我们你正在使用什么数据库(RDBMS)。 – 2011-03-21 16:41:45

+0

看起来像SQL Server。那是对的吗?如果是这样的版本?你还问什么?如何查找表中的东西,并将其分配给一个变量? – 2011-03-21 16:43:39

+0

是的。 SQL服务器 – AllRD 2011-03-21 16:45:08

回答

1

如果是SQL服务器,你可以简单地从“插入的”表中查询象下面这样:

select @UserName =(select Your_USERID_ColumnName from inserted) 

随着SQL Server在插入/更新和删除发生有两个虚拟表“插入的”和“删除“,你可以查询对

+0

感谢您的回复。但是我收到以下errorMsg 207,级别16,状态1,过程tblXXXXX_ChangeTracking,行77 无效的列名'UserId'。这是我正在运行此触发器的每个表的消息。我可以在每个表格中看到UserId列。 – AllRD 2011-03-21 17:07:44

+0

是插入语句的UserId部分? – curtisk 2011-03-21 17:09:02

+0

谢谢。这工作完美。 – AllRD 2011-03-21 19:20:22