微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

审计:如何在没有触发器的情况下将 SYSTEM_USER 写入表

如何解决审计:如何在没有触发器的情况下将 SYSTEM_USER 写入表

我正在尝试找到一种方法,可以在插入或更新记录时自动将 SYstem_USER 的值写入表中的列。

过去我使用 INSTEAD OF 触发器来实现这种事情,但我使用临时表来维护每条记录的审计历史,它们不允许使用触发器,因此选项已出。

我还考虑向每个表添加一个标识列并在应用程序层为此指定一个值,但是如果有人直接更新数据库(例如:通过 sql)并且业务需求指定,这将失败必须处理这种情况。

在研究这个并使用选项时,我尝试使用表中的计算字段,它在历史时态表上运行良好,但在“当前”表中它总是返回查询用户名称,而不是上次写入记录的用户

有什么办法可以让数据库在写入时自动设置不涉及触发器的字段的值?

解决方法

也许您可以尝试使用默认值

create table #test (id int,name varchar(50),username varchar(50) default (system_user))

insert into #test (id,name) values (1,'john'),(2,'rambo')

select * from #test

在我的情况下返回

id name  username
1  john  sa
2  rambo sa

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。