如何使用DEFAULT约束

时间:2017-09-24 05:54:02

标签: sql sql-server tsql

这是我的示例表定义:

CREATE TABLE [MyTable] 
(
    [ColumnName] [bit] NOT NULL
)

ALTER TABLE [MyTable] ADD DEFAULT ((0)) FOR [ColumnName]

我希望能够将Null值传递给我的存储过程@ColumnValue,例如:

@ColumnValue = null;

INSERT INTO [MyTable] ([ColumnName])
VALUES (@ColumnValue)

但是我收到了这个错误:

  

"无法将值NULL插入列... INSERT失败,使用"

为什么DEFAULT约束不起作用?

2 个答案:

答案 0 :(得分:2)

解决:

as @ J.D. Pace说:只有在Insert语句中没有指定值时,才会插入默认值。

所以@dotNET建议,我已使用INSERTISNULL查询语句中指定了默认值:

  

ISNULL - SQL Server ISNULL()函数允许您在表达式为NULL时返回备用值:

@ColumnValue = null;

INSERT INTO [MyTable] (
    [ColumnName]
)
VALUES (
    ISNULL(@ColumnValue, 0)
)

答案 1 :(得分:1)

只有一列bit类型的表具有默认值似乎是一个糟糕的设计。几乎可以肯定,这些东西可以以不同的更好的方式存储。另一方面,如果表格中还有其他列未包含在帖子中,只需跳过INSERT查询中的此特定列,它就可以正常工作。最后,您也可以在INSERT查询中指定默认值。

相关问题