代码之家  ›  专栏  ›  技术社区  ›  Shahar Shokrani

如何使用默认约束将null值插入非null列

  •  2
  • Shahar Shokrani  · 技术社区  · 9 年前

    这是我的 实例

    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插入列中…插入失败,错误为”

    DEFAULT 约束不起作用?

    2 回复  |  直到 9 年前
        1
  •  3
  •   Shahar Shokrani    9 年前

    解决了的:

    正如@J.D.佩斯所说:只有在 Insert

    正如@dotNET所建议的,我已经在 INSERT 使用查询语句 ISNULL

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

    @ColumnValue = null;
    
    INSERT INTO [MyTable] (
        [ColumnName]
    )
    VALUES (
        ISNULL(@ColumnValue, 0)
    )
    
        2
  •  1
  •   dotNET    9 年前

    只有一列的表 bit 带有默认值的类型似乎是一种糟糕的设计。这些东西几乎可以用一种不同的更好的方式来储存。另一方面,如果表中还有其他列没有包含在文章中,只需在 INSERT 插入 也可以查询。