首页 > 解决方案 > 列名或提供的值的数量与表定义不匹配。默认值?

问题描述

我在数据库中的表中添加了一个新列。我没有更改代码以插入此新列,而是尝试创建此新列以在插入时具有默认值。

    ALTER TABLE myTableName
    ADD DateColumn SMALLDATETIME DEFAULT GetDate()
    DECLARE @Dates SMALLDATETIME
    SET @Dates =  GetDate()

     UPDATE myTableName
     SET DateColumn = @Dates
     ALTER COLUMN DateColumn SMALLDATETIME NOT NULL

问题是我在上面收到此错误,因为有 13 列,并且多年来未触及的代码仅插入 12 列并且它们不明确(例如

Insert into table ColumnNames Values(values))

这只是平原

  insert into table Values (xxx, xxx ,xxx)

如何让插入忽略新列,每次添加新行时只让新列插入默认数据?

标签: c#sqlsql-server

解决方案


这听起来有点激进,但您可以执行以下操作:

  • 将表重命名为新名称
  • 创建一个使用旧名称但没有新列的视图

瞧!该视图将是可更新的,并且旧代码应该可以工作。

insert注意:如果有一个明确的列列表,这个问题就不会发生。您应该致力于修复代码以及解决问题。


推荐阅读