admin

我可以添加不带DEFAULT值的非空列吗

sql

是否可以添加我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说:

ALTER
TABLE仅允许添加可以包含空值或指定DEFAULT定义的列,或者要添加的列是Identity或timestamp列,或者如果不满足任何先前条件,则该表必须为空才能允许添加本专栏的内容。无法将列“
test”添加到非空表“ shiplist”中,因为它不满足这些条件。

如果是,请让我知道语法,如果否,请说明原因。


阅读 217

收藏
2021-05-10

共1个答案

admin

不,你不能。

因为如果可以的话,SQL将不知道在现有记录中将什么作为值。如果表中没有任何记录,它将毫无问题地工作。

最简单的方法是使用默认值创建列,然后删除默认值。

ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn

另一种选择是添加没有约束的列,填充所有单元格的值并添加约束。

2021-05-10