这是我的示例表定义:
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
约束不起作用?
答案 0 :(得分:2)
as @ J.D. Pace说:只有在Insert
语句中没有指定值时,才会插入默认值。
所以@dotNET建议,我已使用INSERT
在ISNULL
查询语句中指定了默认值:
ISNULL - SQL Server ISNULL()函数允许您在表达式为NULL时返回备用值:
@ColumnValue = null;
INSERT INTO [MyTable] (
[ColumnName]
)
VALUES (
ISNULL(@ColumnValue, 0)
)
答案 1 :(得分:1)
只有一列bit
类型的表具有默认值似乎是一个糟糕的设计。几乎可以肯定,这些东西可以以不同的更好的方式存储。另一方面,如果表格中还有其他列未包含在帖子中,只需跳过INSERT
查询中的此特定列,它就可以正常工作。最后,您也可以在INSERT
查询中指定默认值。