SQL Server - 更改列的默认值

时间:2012-01-06 16:02:40

标签: sql-server-2008

我需要更改现有表中列的默认值。

我假设(我实际上在网上发现了一些“确认”这个例子)我能做到的 ALTER TABLE表ALTER COLUMN列SET DEFAULT'something'但我得到语法错误,并且根据此http://msdn.microsoft.com/en-us/library/ms190273.aspx不支持DEFAULT。

下一个想法是从数据库中删除默认约束但我发现在创建表时没有命名约束,并且SQL会为每个部署生成一个随机名称,因此我无法按名称引用它。

我想出了一个来自sys表的查询,它返回约束的名称:

select o.name from sys.objects o 
join sys.columns c on o.object_id = c.default_object_id
join sys.tables t on c.object_id = t.object_id
where t.name='TableName' and c.name='ColumnWithDefValue'

我即将通过字符串连接编写查询,我不能停止思考如何更好地完成所有这些操作。有什么建议吗?

TL; DR版本:在SQL Server R2中更改列的默认约束的最简单方法是什么?

由于

1 个答案:

答案 0 :(得分:1)

看起来您必须删除约束然后重新创建

http://bypsoft.blogspot.com/2007/10/changing-default-column-values-sql.html