【问题标题】:SQL update statement error after i add a column to a table将列添加到表后 SQL 更新语句错误
【发布时间】:2019-06-04 09:41:43
【问题描述】:

我有一个名为 [user] 的表,我使用简单的 alter table 语句向表中添加了一列:

ALTER TABLE [user]
ADD Company nvarchar(50) null

当我尝试像下面这样进行简单更新时

 UPDATE dbo.[User] 
   SET  username = 'al'
             WHERE UserId = 17

我收到一个错误

消息 213,级别 16,状态 1,过程 User_INSERT_UPDATE_DELETE,行 6 [批处理开始第26行]

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

如果我删除该列,一切正常。

提前谢谢你!

【问题讨论】:

  • 看来,错误出现在INSERT INTO dbo.[User] 块中的其他位置。您需要在INSERT INTO dbo.[User] 中手动提及列名来解决问题
  • 您使用的是哪个 dbms?是否涉及任何触发器?
  • 用户表上是否有触发器?您需要先检查此过程 User_INSERT_UPDATE_DELETE 。 6号线有什么?或者,如果可以,您可以编辑您的问题并粘贴该过程的代码。

标签: sql-server tsql ddl


【解决方案1】:

这不是更新语句的错误。此错误来自插入语句,其中缺少列列表。这是您应该始终在插入语句中指定列列表的主要原因之一(但不是唯一原因)。

您应该在User_INSERT_UPDATE_DELETE 过程(或触发器)的其他地方查找并解决此问题。实际上,您可能应该检查数据库中包含insert 语句的所有过程,并确保所有插入语句都包含列列表,以避免再次处理此类错误。

在 T-SQL 中编写insert 语句的正确方法是:

INSERT INTO <TableName> (Column_1 [, Column_2, ... Column_n])
VALUES (Value_1 [, Value_2, ... Value_n])

或者这个:

INSERT INTO <TableName> (Column_1 [, Column_2, ... Column_n])
SELECT Value_1 [, Value_2, ... Value_n]
FROM <OtherTableOrView>

【讨论】:

  • 让我们补充一点 - 当您更改表时,您需要查找并查看该表的依赖关系以确定是否应针对该架构更改更新任何其他代码位。
猜你喜欢
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多