【发布时间】:2022-01-04 07:23:38
【问题描述】:
我想在 MsSQL 中创建 created_at 和 updated_at。
这里是查询:
CREATE TABLE current_timestamp_demos
(
id INT PRIMARY KEY IDENTITY (1, 1),
msg VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);
created_at 一切正常,但在提交 updated_at - 在这里,ON UPDATE CURRENT_TIMESTAMP 出现错误。 DataGrip 说的是方言,我猜这是MySQL 方言。
那么,如何创建 created_at 和 updated_at 字段?我创建了created_at,但使用updated_at 我遇到了一些问题。
【问题讨论】:
-
默认 updated_at 列值为 NULL。但是在更新行 updated_at 列值将通过查询用 current_timestamp 更新。
-
我认为,当您添加记录时
created_at和updated_at将具有相同的值,但是当您更新它时,updated_at会发生变化。不过这里没关系,就是这个语句DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP在这里不起作用,是MySQL dialekt,不是我需要的(MsSQL) -
不要使用 TIMESTAMP。它实际上是rowversion。还要注意
The timestamp syntax is deprecated.使用DATETIME或DATETIME2 -
SQL Server不支持ON UPDATE CURRENT_TIMESTAMP。您需要在查询中手动更新列值,或者通过更新触发器进行更新
标签: sql-server database date timestamp