将列添加到表后,SQL更新语句错误

时间:2019-06-04 09:41:43

标签: sql-server tsql ddl

我有一个名为[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行]

     

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

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

提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

在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>