我有一个名为[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行]
列名或提供的值数与表不匹配 定义。
如果我删除该列,一切正常。
提前谢谢!
答案 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>