2008-09-19 65 views

回答

10

你需要两个语句。首先创建不为null的列。然后改变NOT NULL约束可空

alter table mytable add mycolumn varchar(10) not null default ('a value') 
alter table mytable alter column mycolumn varchar(10) null 
4

我明白你的问题,但你说,在今后的记录,NULL(未知的,不确定的或任何你语义)是可以接受的(但如果是在离开一个插入,会有一个默认值),但是对于所有现有的数据,您将继续并将其分配为默认值。

我会在这个情况看很难,问为什么你甚至要允许在所有未来的记录NULL值 - 历史记录中的什么都不会拥有它,而且是未来的记录代替默认。

0

ALTER TABLE {TABLENAME} ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} [**WITH VALUES]**

WITH VALUES可用于在新列存储的默认值表中的每个现有行。

有关MSDN链接的更多详细信息。 https://msdn.microsoft.com/en-in/library/ms190273.aspx