代码之家  ›  专栏  ›  技术社区  ›  CodeMan03

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

  •  2
  • CodeMan03  · 技术社区  · 7 年前

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

        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)
    

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Gordon Linoff    7 年前

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

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

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

    注意:如果 insert 有明确的列列表。您应该在修复代码的同时解决问题。