更新行时:无法在对象'dbo.tblRelatie'中插入具有唯一索引'idxRelatiesoortRelatiecode'的重复键行

jao*_*jao 4 sql-server-2005

当UPDATEing一行时,我得到上述错误.idxRelatiesoortRelatiecodefldRelatieSoort和组成,并且fldRelatieSoort两者的组合在表中仅存在一次.

那么这个错误的原因是什么呢?

更新 此处是更新脚本

UPDATE [SQL].[MyDatabase].dbo.tblRelatie SET 
fldNaam = 'De heer A. Removed', 
fldAdres = 'Removed 12', 
fldPostcode = '1234 AA', fldPlaats = 'Removed', 
fldCorrespondentieAdres = 'Removed 12', 
fldCorrespondentieAdresPostcode = '1234 AA', 
fldCorrespondentieAdresPlaats = 'Removed', 
fldRelatieSoort = 1,
fldRelatiecode = 907534, 
fldCorrespondentieAdresLandID = 1, fldMobieleTelefoon = '', fldTelefoon = '', fldFax = '',  fldEmail = '', fldWebsiteUrl = '', fldBankrekeningnummer = '', fldNaamRekeninghouder = '', 
fldPlaatsRekeninghouder = '', fldKrediettermijn = 30, fldLandID = 1 
WHERE fldRelatieID =1507;
Run Code Online (Sandbox Code Playgroud)

这是idxRelatiesoortRelatiecode:

CREATE UNIQUE NONCLUSTERED INDEX [idxRelatiesoortRelatiecode] 
ON [dbo].[tblRelatie] 
(
    [fldRelatieSoort] ASC,
    [fldRelatiecode] 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, FILLFACTOR = 90) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 6

错误消息中没有太多歧义:您某处设置了副本

  • 要么:组合已经存在,并且您尝试再次插入它
  • 或者:它不存在,您使用相同的组合更新多行

或重叠:

  • 组合已存在,您使用相同的组合更新多个行

除非指数或其他错误......

  • 错误消息中存在歧义.这意味着某个地方存在一个流氓INSERT命令,当它只是一个UPDATE命令时.你的术语"设定"并不含糊. (2认同)