SSMS为UserDate列添加DEFAULT (getdate())约束验证失败怎么办
SSMS默认值约束报错解决方案
错误原因
- 语法适配错误
你输入的DEFAULT (getdate()) FOR [UserDate]是直接执行SQL语句时的完整默认值约束语法,不适用于SSMS的约束表达式对话框。该对话框仅需要填写默认值的计算逻辑,不需要包含DEFAULT关键字、FOR [UserDate]后缀,正确输入内容仅为(GETDATE())即可。 - 约束配置混淆
非空属性是独立于默认值约束的单独设置,不能合并到默认值约束的表达式中。你需要在对应列的属性面板,将「允许Null值」选项设置为否,即可完成非空约束配置。
注意事项
如果你的数据表中已经存在历史数据,修改列为非空前需要先把现有行中UserDate为NULL的记录补充有效值,否则非空约束配置会失败。
效果验证
配置完成后可执行测试语句验证:
-- 插入不指定UserDate列的测试数据 INSERT INTO 你的表名(其他列名) VALUES(对应列值) -- 查询可看到UserDate已自动填充当前时间 SELECT * FROM 你的表名
内容的提问来源于stack exchange,提问作者SimonD
相关产品推荐
相关产品推荐

