尝试更新表时出错。更新表时,会收到错误消息:msg 2601,级别14,状态1,行1不能在具有唯一索引“admin\u userid”的对象“dbo.dimadmin”中插入重复的键行。重复的键值是(c2botha)。当我使用sqlassist查看表属性时,我看到在试图更新的字段旁边有一个 lightning 图标。这个 lightning 图标是什么意思?这是否意味着字段不能包含重复的值。请告知
ffscu2ro1#
错误消息表示您尝试更新或插入的列在任何行中都已具有该值。因为已经创建了唯一索引,所以该列不能有重复的索引。因此,请确保该列的值“c2botha”不存在。在插入记录之前检查是否存在。或者,如果insert列表有重复项,那么它也可能抛出相同的错误,并且不会在表中的existence check查询中捕获该错误。您可以通过以下任一方法检查是否存在
IF NOT EXISTS(SELECT 1 FROM Yourtable WHERE <Condition>) BEGIN <Insert Query> END
或者像这样
INSERT INTO YourTable1 SELECT * FROM YourTable2 YT2 WHERE NOT EXISTS ( SELECT 1 FROM YourTable1 YT1 WHERE YT1.ID = YT2.ID )
fiei3ece2#
错误很明显,它告诉你已经有一个记录 UserID 是 C2Botha . 该列上有一个唯一索引。所以,不能在同一个文件中插入另一个。这里有两种选择。删除现有记录并小心处理。它可能会导致相关的数据问题。或者可以更新现有记录。
UserID
C2Botha
2条答案
按热度按时间ffscu2ro1#
错误消息表示您尝试更新或插入的列在任何行中都已具有该值。
因为已经创建了唯一索引,所以该列不能有重复的索引。
因此,请确保该列的值“c2botha”不存在。
在插入记录之前检查是否存在。或者,如果insert列表有重复项,那么它也可能抛出相同的错误,并且不会在表中的existence check查询中捕获该错误。
您可以通过以下任一方法检查是否存在
或者像这样
fiei3ece2#
错误很明显,它告诉你已经有一个记录
UserID
是C2Botha
. 该列上有一个唯一索引。所以,不能在同一个文件中插入另一个。这里有两种选择。删除现有记录并小心处理。它可能会导致相关的数据问题。
或者可以更新现有记录。