如何向SQL Server中不允许空值的表添加列?

时间:2009-12-22 16:24:01

标签: sql sql-server

我有一个表,我想添加一个位列,我希望所有现有数据都默认为false。

如何在我为现有行插入false之前允许我指定NOT NULL的方式更改表格?

我应该将其创建为可为空的,执行插入操作而不是将其设置为可空的吗?

6 个答案:

答案 0 :(得分:48)

您可以添加列并提供用于所有现有行的默认值。

ALTER TABLE foo 
ADD bar bit 
DEFAULT 0 NOT NULL;

答案 1 :(得分:3)

ALTER TABLE foo ADD bar bit DEFAULT 0 NOT NULL WITH VALUES;

“with values”子句将默认值指定为现有行。

答案 2 :(得分:2)

作为所列答案的替代方案,还有另一种可用的语法可以更好地适合某些人,例如,如果您使用的工具如“ReadyRoll'。

ALTER TABLE [dbo].[FOO] ADD BAR bit NOT NULL CONSTRAINT [df_Bar] DEFAULT 0

查看this SO answer,看看为什么命名约束(上面的df_Bar)很好。

答案 3 :(得分:1)

ALTER TABLE dbo.MyTable ADD MyColumn bit NOT NULL DEFAULT 0

对于它的价值,您可以启动企业管理器,在UI中进行更改,然后让它生成更改脚本 - 您可以看到它将如何完成这些任务。

答案 4 :(得分:0)

我也按照你说的“将它创建为可空,执行插入而不是切换为非可空”来完成它。这样做我没有遇到任何问题。

我还不需要找到更好的方法,但是如果有另一种方法我会很感兴趣....

答案 5 :(得分:0)

我通常将字段设置为可为空,默认为false,在您的情况下更新数据库中的所有字段,然后将其切换为null