我正在尝试使用 SQL Server 2008 中的 SQL 语句更改列的默认值。我在很多地方找到了如何在创建表/添加列时设置默认值,但没有找到如何设置它/一旦列已经存在就修改它。
这就是我可以用来在添加时设置它的内容:
ALTER TABLE MyTable ADD MyColumn int NOT NULL DEFAULT 0
这可行,但如果我稍后尝试修改它:
ALTER TABLE MyTable ALTER COLUMN MyColumn int NOT NULL DEFAULT -1
ALTER TABLE MyTable ALTER COLUMN MyColumn int NOT NULL SET DEFAULT -1
这些在语法上都不正确,而且我在任何地方都找不到执行我假装的操作的语法。我唯一的选择是添加一个新列,复制前一列中的值,然后删除前一列和新列以进行更改,但这对我来说似乎不正确。
有没有一种方法可以用简单的一句话做我想做的事?
Thanks.
当您添加具有默认值的列时,会发生的情况是创建了默认约束:
create table _temp
( x int default 1)
sp_help _temp
result:
constraint_type constraint_name
DEFAULT on column x DF___temp__x__5A3B20F9
所以列定义中的default子句只是创建约束的快捷方式;默认值不是列的固有属性。如果要修改已存在列的默认值,则必须先删除约束:
alter table _temp drop constraint DF___temp__x__5A3B20F9
然后创建一个新的默认约束:
alter table _temp add constraint DF_temp_x default 2 for x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)