列名或提供的值数与表定义不匹配。默认值?

时间:2018-07-10 20:48:08

标签: c# sql sql-server

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

    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)

如何让插入操作忽略新列,而仅在每次添加新行时让新列插入默认数据?

1 个答案:

答案 0 :(得分:3)

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

  • 将表重命名为新名称
  • 使用旧名称创建视图,但不使用新列

Voila!该视图将是可更新的,并且旧代码应该可以使用。

注意:如果insert具有明确的列列表,则永远不会发生此问题。您应该修复代码以及解决问题。