MS SQL Server如何实现CURRENT_TIMESTAMP自动更新及等效语法转换
SQL Server 实现更新时自动刷新时间戳的方案
SQL Server 没有MySQL自带的ON UPDATE CURRENT_TIMESTAMP语法,需要通过「字段默认值+更新触发器」组合实现相同效果,具体步骤如下:
1. 创建表时设置插入时的默认时间
创建表时给updated字段设置默认值为当前时间,实现插入记录时自动赋值的效果,语法如下:
CREATE TABLE new_table ( updated DATETIME NOT NULL DEFAULT GETDATE() -- 其他字段按需添加 )
说明:如果需要使用UTC时间,把
GETDATE()替换为GETUTCDATE()即可。
2. 创建更新触发器实现修改时自动刷新时间
创建AFTER UPDATE触发器,当表中任意记录被修改时自动更新updated字段为当前时间:
CREATE TRIGGER trg_new_table_update ON new_table AFTER UPDATE AS BEGIN -- 只更新本次修改涉及的记录,避免全表更新 UPDATE new_table SET updated = GETDATE() FROM new_table INNER JOIN INSERTED ON new_table.主键字段 = INSERTED.主键字段 END
注意:需要把上面代码中的
主键字段替换为你表实际的主键列名,如果是联合主键要把所有关联条件都补充完整。
补充说明
你之前使用的手动更新语句update myTable set updated = CURRENT_TIMESTAMP;在SQL Server中也可以正常执行,适合需要强制刷新时间戳的场景,日常自动更新靠上述触发器即可实现,不需要额外手动操作。
内容的提问来源于stack exchange,提问作者mello
相关产品推荐
相关产品推荐

