插入的每一行会将所有行的时间戳更新为当前日期/时间

时间:2018-10-23 14:36:04

标签: sql-server tsql

对不起,我对此并不陌生,我的知识有限。我有一个捕获信息的网络表单。我有一个create_date列来添加当前的日期/时间戳,但是,每当它捕获一个条目时,它都会更新所有行。创建记录时如何设置日志?

column details

all rows update to most current entry

2 个答案:

答案 0 :(得分:1)

那是因为它是一个计算列。您应该将其更改为默认值为GetDate()的常规列。

ALTER TABLE TableName
    DROP COLUMN create_date;

ALTER TABLE TableName
    ADD COLUMN create_date NOT NULL DEFAULT(GetDate());

请注意,这样做将重新创建create_date列,并且在创建该列时表中存在的所有记录将获得相同的值。对于重新创建后插入的记录,这只是一个准确的create_date。

答案 1 :(得分:0)

尽管在这种情况下建议使用默认值,但使用计算列不一定是错误的。如果您的特定情况要求使用计算列而不是DEFAULT,请尝试使其成为PERSISTED,如下面的博客文章所示。

https://www.mssqltips.com/sqlservertip/1682/using-computed-columns-in-sql-server-with-persisted-values/

编辑:

不好意思,@ ZoharPeled关于GETDATE不确定性的评论是正确的。 PERSISTED在这种情况下不起作用。 DEFAULT似乎是最好的选择。