【发布时间】:2016-11-06 13:50:32
【问题描述】:
我正在开发一个对 SQL Server 数据库中的某个表执行 CRUD 操作的 Web 应用程序。执行这些操作的应用程序中会有一个登录用户。
(顺便说一下,我使用的是实体框架)
假设表格是
我的表
- MyTableId
- 某列
- LastModifiedUserId
- 最后修改日期
我有一个像
这样的审计表MyTableHistory
- MyTableHistoryId
- MyTableId
- 某列
- ActionType --ins/upd/del
- ActionUserId
- 行动日期
我正在使用触发器在审计表中插入数据。
通过查阅 Inserted 和 Updated 表来查找修改记录的用户 ID,插入和更新很容易。
但是删除呢?知道如何获取这些信息吗?
【问题讨论】:
-
如您所说,有
INSERTED伪表,但没有UPDATED伪表。还有DELETED伪表 -
但 DELETED 将仅包含上次更新记录的 LastModifiedUserId,而不是删除记录的人。这就是我想要的
-
suser_sname()是运行查询的帐户名。 -
suser_sname()只会返回连接到 SQL Server 的任何帐户的登录信息。如果它被网络服务使用,它不会识别最终用户。
标签: sql-server triggers audit