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

Kin*_*tor 23 sql sql-server

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

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

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

Rob*_*tie 50

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

ALTER TABLE foo 
ADD bar bit 
DEFAULT 0 NOT NULL;
Run Code Online (Sandbox Code Playgroud)

  • 我通常喜欢NAME我的约束 - 甚至默认约束 - 以防我以后需要删除它们.默认的"DF__TimeZones__IsUsa__3D5E1FD2"名称有点难以记住..... (5认同)

gin*_*boy 5

作为列出的答案的替代方案,还有另一种语法可能更适合某些人,例如,如果您使用“ReadyRoll”等工具。

ALTER TABLE [dbo].[FOO] ADD BAR bit NOT NULL CONSTRAINT [df_Bar] DEFAULT 0
Run Code Online (Sandbox Code Playgroud)

查看这个 SO 答案,了解为什么命名约束(df_Bar上述)很好。