无法向具有 TIMESTAMP 数据类型的 SQL Server 表添加新列

Kev*_*vin 1 sql sql-server

我正在尝试向现有 SQL Server 表中添加一个新列,数据类型为TIMESTAMP.

这是我的脚本:

ALTER TABLE OrderDetails 
    ADD ModifiedTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

它不应该为空。运行此脚本会导致错误

无法在时间戳数据类型的列上创建默认值

我尝试在没有DEFAULT CURRENT_TIMESTAMP. 但后来它说

无法将值 NULL 插入到“ModifiedTime”列中

请问有什么建议吗?

mar*_*c_s 9

TIMESTAMP在 SQL Server 中与日期和时间完全无关(感谢 Sybase 把它搞砸了!) - 它只是一个系统内部的二进制计数器(通常用于乐观并发检查)。它也已被弃用,并重新命名ROWVERSION,这对它的含义更加清晰。

对于日期和时间 - 使用DATE(如果您只需要日期 - 不需要时间),或DATETIME2(n) 数据类型:

ALTER TABLE OrderDetails 
    ADD ModifiedTime DATETIME2(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

有关日期和时间数据类型和函数的更多详细信息,请参阅Microsoft 官方文档