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

标签 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)

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

最佳答案

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

  • 将表重命名为新名称
  • 使用旧名称但不包含新列创建 View

瞧! View 将是可更新的,旧代码应该可以工作。

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

关于c# - 列名称或提供的值的数量与表定义不匹配。默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51273666/

相关文章:

c# - 为什么使用 stackalloc 分配的内存在超出范围时不会被释放?

c# - 不明显的类型转换 : x = (x + xstep < xmax ? x + xstep : xmax)

c# - 是否可以参数化 nunit 测试

SQL:快速累积频率查询(postgres)

sql - 手动转发序列 - oracle sql

Java 连接到 SqlServer 数据库

c# - 使用 CLR 和 GZIP 压缩行集

mysql - Postgres 缓慢且延迟的插入

sql-server - 使用 EF Core 2.1 和 SQL Server 进行正确的并发处理

sql-server - SQL Server : Geography search performance - query nearest stores