Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法在具有唯一索引的对象中插入重复的键值行SQL Server_Sql Server_Sql Server 2008_Sql Server 2005 - Fatal编程技术网

Sql server 无法在具有唯一索引的对象中插入重复的键值行SQL Server

Sql server 无法在具有唯一索引的对象中插入重复的键值行SQL Server,sql-server,sql-server-2008,sql-server-2005,Sql Server,Sql Server 2008,Sql Server 2005,我得到了这个错误: 无法在具有唯一性的对象“dbo.CLIENT”中插入重复的键行 索引'CLIENT_idx_A'。重复的键值为(14441828,1) 当我检查索引时,它是这样创建的: CREATE UNIQUE NONCLUSTERED INDEX [CLIENT_idx_A] ON [dbo].[CLIENT] ( [SOURCE_SYSTEM_CLIENT_ID] ASC, [SOURCE_SYSTEM_ID] ASC ) WITH (PAD_INDEX

我得到了这个错误:

无法在具有唯一性的对象“dbo.CLIENT”中插入重复的键行 索引'CLIENT_idx_A'。重复的键值为(14441828,1)

当我检查索引时,它是这样创建的:

CREATE UNIQUE NONCLUSTERED INDEX [CLIENT_idx_A] ON [dbo].[CLIENT] 
(
     [SOURCE_SYSTEM_CLIENT_ID] ASC,
     [SOURCE_SYSTEM_ID] ASC
)
     WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE  = OFF,
           SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
           DROP_EXISTING = OFF, ONLINE = OFF,
           ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
实际上,我想更新
源系统客户端ID
中的一个值,我的
源系统客户端ID
对于我要更新的所有
源系统客户端ID
都是1。所以我认为,它遇到了重复。我怎样才能解决这个问题

显然(?)以下查询将返回update语句所复制的行

select *
from [dbo].[CLIENT]
where [SOURCE_SYSTEM_CLIENT_ID] = 338393005
and [SOURCE_SYSTEM_ID] = 1
解决此问题的方法取决于您,或者存在的记录有效,并且您希望更新其中的某些列,或者您可能希望在执行最初生成错误的操作之前删除冲突行


如果您不是故意重新开发模式,那么删除约束有点极端,这将使您容易受到SQL和应用程序中的错误的影响,从而损坏数据。只有当您真正知道自己在做什么以及想要实现什么时,才可以在此处执行操作。

您遇到了该错误,因为您将使用(338393005,1)生成两条记录。如果允许,您需要删除该索引。这就是解决方案。我是否需要删除索引,运行更新查询,然后再次创建索引?或者是否有任何方法可以删除索引?您的数据库被限制为每个系统不允许有多个客户端记录。如果此规则不再有效且允许重复,则您可以删除该索引,将该索引重新添加为非唯一索引,然后运行更新。或者,如果该索引存在是有原因的,则删除您尝试更新的记录,而不是更新记录,这将导致重复。当然,添加那些不会出现错误的记录。抛出上述错误的语句是什么?存在的记录是有效的,我不想删除它。我只想更新一些记录和一些列。是您执行的SQL语句导致了错误,还是您正在尝试在将此错误传递给您的应用程序中进行更新?您为什么试图更改现有记录的[SOURCE\u SYSTEM\u CLIENT\u ID],这与此有关。您需要在问题中添加更多信息,最好是更新语句(如果可用)。