如何为已存在的列添加默认值?

38

我的SQL Server数据库中有一个已有的列,我已经尝试了我能想到的一切,但是无法在该列上添加默认值。 在其他所有数据库中正常工作的是

alter table mytable 
  alter column mycolumn set default(now()) --mycolumn is a datetime

如何在SQL Server中执行此操作?

使用该确切语法时,我收到的错误是:incorrect syntax near the keyword 'set'

2个回答

76

使用:

ALTER TABLE dbo.mytable
ADD CONSTRAINT def_mycolumn DEFAULT GETDATE() FOR mycolumn

更多信息请参阅:使用默认约束


@Earlz:看到了,非常感谢 :) - OMG Ponies
我认为 SYSUTCDATETIME() 会是更好的默认表达式,因为 GETDATE() 返回的时间是服务器本地时区的时间,这很愚蠢。 - Dai

8

如果您想更改已存在列的默认值,则需要先删除约束,然后按照以下步骤重新添加约束。

ALTER TABLE <TABLE> 
DROP CONSTRAINT <CONSTRAINT NAME>

ALTER TABLE <TABLE> 
ADD CONSTRAINT <CONSTRAINT NAME> DEFAULT <VALUE> for <COLUMN>

如果您没有表的约束细节,可以使用以下查询。
sp_helpconstraint <TABLE>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接