这是我的示例表定义:
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)
但是我遇到了这个错误:
"不能将值插入列中...插入失败的"
"失败
为什么DEFAULT
约束不起作用?
已解决:
as @j.d。pace说:仅当未在Insert
语句中指定该值时,才会插入默认值。
因此,正如@dotnet所建议的,我使用 ISNULL
中指定了 INSERT
查询语句中的默认值:
isnull -sql Server isNull()函数可让您在表达式为null时返回替代值:
@ColumnValue = null;
INSERT INTO [MyTable] (
[ColumnName]
)
VALUES (
ISNULL(@ColumnValue, 0)
)
只有一列bit
类型的表,默认值似乎是一个不好的设计。这些东西几乎可以肯定可以以不同的方式存储。另一方面,如果表格中没有包含在帖子中的其他列,请跳过INSERT
查询中的此特定列,并且可以正常工作。最后,您也可以在INSERT
查询中指定默认值。