【问题标题】:How to set timestamp on update event in SQL Server?如何在 SQL Server 中设置更新事件的时间戳?
【发布时间】:2021-01-15 05:45:32
【问题描述】:

在创建表或使用以下命令更改表时出现以下错误

关键字“on”附近的语法不正确

请帮助我 - 如何设置更新时间戳?

create table my_table 
(
    index1 char(32) not null primary key,
    title varchar(50),
    my_timestamp timestamp not null 
         default current_timestamp on update current_timestamp
);

【问题讨论】:

  • timestamp 的名字很糟糕,并不是你想象的那样。见this Q & A。您需要一个 datetimedatetime2 列来捕获更新(如果您想将创建与以后的更新分开,则需要一个单独的列)。你需要一个触发器来填充它......

标签: sql-server database ssms


【解决方案1】:

数据类型Timestamp是由SQL Server自己自动生成的,你不能对其指定默认约束。

documentation

Timestamp 已弃用,应使用 rowversion。

【讨论】:

  • 它是一种二进制格式,例如 ... 0x00000000000007D4
【解决方案2】:

TIMESTAMP 在 SQL Server 中不是用于存储日期和时间值的东西。它是一个内部的二进制计数器 - 现在已恰当地重命名为 ROWVERSION

如果您需要存储日期和时间,请改用DATEITME2(n)

create table my_table 
(
    index1 char(32) not null primary key,
    title varchar(50),
    my_timestamp datetim2(3) not null 
);

不幸的是,要获得“上次修改日期和时间行”功能,您需要使用触发器 - 您不能使用 DEFAULT 约束来执行此操作...

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 2011-06-03
    • 2015-06-22
    • 1970-01-01
    • 2021-11-23
    • 2012-02-22
    • 2011-01-06
    相关资源
    最近更新 更多