我有一个包含SQL Server销售记录的表sales
。我需要一个列modified_by
,它显示最后修改的actor(用户)。列modified_by
应填入与 Windows身份验证相关的用户ID。
id content modified_by
----------- ----------- -----------
1 foo Tom
2 bar Jack
如果Tom更新了Jack的记录,那么对于记录2,modified_by
列将显示Tom
。
此UPDATE操作应由服务器自动完成,以进行每次记录修改。有可能吗?我应该使用触发器吗?
答案 0 :(得分:3)
我们可以使用TRIGGER在INSERT或UPDATE语句
之后检查行CREATE TRIGGER dbo.after_update ON dbo.sales
AFTER INSERT, UPDATE
AS
UPDATE dbo.sales
SET modified_by = SYSTEM_USER
FROM inserted
WHERE inserted.id = dbo.sales.id
答案 1 :(得分:0)
update table
set lastmodifiedby =suser_sname()
更多信息here
您还可以创建一个上次修改为默认值的表格。
create table tt
(
id int,
lastmodifiedby varchar(100) default suser_sname()
)