sql - 当该行发生更改时,SQL Server 2016 更新表中该行的日期时间属性
问题描述
基本上我有一个包含三列的表:Data, DatetimeCreated, DatetimeModified
.
每当该行的属性发生更改 时,我都需要更新该DatetimeModified
属性。GETDATE()
Data
这如何使用UPDATE
触发器来完成?任何帮助表示赞赏。
我在 Windows 10 上使用 SQL Server 2016
解决方案
您还需要表中的主键列才能正常工作 - 任何严肃的表都应该有......
然后你可以使用这个:
CREATE TRIGGER trgUpdateDatetimeModified
ON dbo.YourTableNameHere
AFTER UPDATE
AS
BEGIN
UPDATE dbo.YourTableNameHere
SET DatetimeModified = SYSDATETIME()
FROM Inserted i
INNER JOIN Deleted d ON d.PrimaryKey = i.PrimaryKey
WHERE d.Data <> i.Data;
END;
根据触发器内可用的Deleted
(之前的旧值UPDATE
)和Inserted
(之后的新值UPDATE
)伪表,它检查列中哪些行有更新Data
,对于那些行,DatetimeModified
更新。
我还建议开始使用SYSDATETIME()
而不是GETDATE()
作为最佳实践。
推荐阅读
- java - 在 JSON 响应中获取实体而不是其 ID
- javascript - 在 Chrome DevTools 中顺序注入和运行 jQuery
- node.js - 我的网站是否可以在其他网站上执行请求?
- regex - 如何在 Swift 中验证类似这样的字符串(例如:27˚)。值是随机的?
- github-pages - 如何在我无法再访问存储库时删除 github 页面 CNAME
- regex - 替换 Google Data Studio 中字符串中的多个空格(正则表达式)
- javascript - 无法将对象键作为局部变量传递给函数
- python - 在 Python 中绘制时间线
- r - lapply 用于多个文件
- r - 有没有办法使用与 [#] 不同的字符来评论您的代码?