我正在尝试向数据类型为TIMESTAMP
的现有SQL Server表添加一个新列。
这是我的脚本:
ALTER TABLE OrderDetails
ADD ModifiedTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
它不应为null。运行此脚本会导致错误
不能在数据类型为时间戳的列上创建默认值
我尝试在没有DEFAULT CURRENT_TIMESTAMP
的情况下执行它。但后来它说
无法将值NULL插入列"ModifiedTime">
有什么建议吗?
TIMESTAMP
与日期和日期完全无关;时间(感谢Sybase把它搞砸了!(-它只是一个系统内部的二进制计数器(通常用于opmistic并发检查(。它也被弃用了,并被重命名为ROWVERSION
,这更清楚地表明了它是什么
对于日期&时间-使用DATE
(如果您只需要日期-不需要时间(或DATETIME2(n)
数据类型:
ALTER TABLE OrderDetails
ADD ModifiedTime DATETIME2(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
有关日期和日期的更多详细信息,请参阅Microsoft官方文档;时间数据类型和功能
请尝试此处提供的以下解决方案:https://www.sql-server-performance.com/defaults-not-created-timestamp/
ALTER TABLE OrderDetails ADD ModifiedTime TIMESTAMP NOT NULL DEFAULT 0