在SQL Server中添加可空列,默认值为null

13

我想在现有的表中添加一个可空布尔列,并将其默认值设置为null。

我使用了这段脚本,但它没有将默认值设置为null,而是将其设置为0。

ADD newColumnName BIT NULL
    CONSTRAINT DF_tableName_newColumnName DEFAULT(null)

5
为什么在可空列上需要设置“默认约束”,特别是当需要该值为“NULL”时? - Raj
我有一个新列的3种状态:true,false和null。当用户在应用程序中填写表单时,他们可以选择用“是”或“否”回答问题,或者可以不回答问题。对于“否”和未回答的反应将不同。我需要将用户的这个属性默认设置为null,就好像他们没有回答那个问题一样。 - Maryam
3
默认值始终为NULL - 您不需要显式添加默认值。 - Nick.McDermaid
我相信在SQL中,字段的值默认为NULL,不需要使用DEFAULT约束显式地将其设置为NULL。 - CodeConnoisseur
1个回答

15

我刚刚在我的SQL Server 2008 R2实例上运行了您的示例代码片段并插入了一条记录。它将列初始化为null,正如预期的那样。下一步是发布您使用的alter语句和insert语句。

我使用了:

alter table tmp1 Add newColumnName bit null CONSTRAINT DF_tableName_newColumnName  DEFAULT(null)
insert into tmp1(emp_id) values(9999)
select * from tmp1
在运行上述操作后,我使用SQL Server Management Studio的“设计”功能来检查新列的属性。结果显示,“默认值或绑定”确实如预期的那样为(Null)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接