我可以添加一个没有DEFAULT值的非空列

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

ALTER TABLE只允许添加可以包含空值的列,或者指定DEFAULT定义,或者添加的列是标识列或时间戳列,或者如果前面的条件都不满足,则表必须是空的以允许添加本专栏。 'test'列不能添加到非空表'shiplist'中,因为它不符合这些条件。

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


不,你不能。

因为如果可以的话,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

另一种方法是添加没有约束的列,填写所有单元格的值并添加约束。


将该列添加到表中,更新现有行,以便它们都不为空,然后添加“非空”约束。


否 - SQL Server相当合理地拒绝了这一点,因为它不知道现有行应具有的值

很容易同时创建一个DEFAULT,然后立即删除它。

链接地址: http://www.djcxy.com/p/76273.html

上一篇: Can I add a not null column without DEFAULT value

下一篇: How to add a not null to an already existing column in SQL Server?