SQL唯一键冲突

时间:2015-02-20 13:47:36

标签: sql-server primary-key

我收到了唯一密钥违规,我不知道为什么,这是我的方案。 我有一个包含以下字段的表:

ID, LocationID, Name, Description, Dewey

ID显然是主键,LocationID是链接到Location表的外键,其他字段只是varchar字段,没有关联关系它们。

当我插入一行LocationIDName与表中另一行的值相同时,我收到此错误:

  

违反UNIQUE KEY约束' IX_InternalLocation'。无法在对象' dbo.InternalLocation'中插入重复键。声明已经终止。

如果其中任何一个字段不同,我可以插入记录没问题。这对我来说似乎很奇怪,因为这些行都不是表的唯一标识符。

出于某种原因,数据库一起认为字段形成了一个键,但这不是它应该如何,当我查看表属性时,它不是这样的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

运行此查询:

SELECT tc.Constraint_Name, cc.Column_Name 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cc 
   ON tc.CONSTRAINT_NAME = cc.CONSTRAINT_NAME
WHERE tc.CONSTRAINT_NAME = 'IX_InternalLocation' AND tc.CONSTRAINT_TYPE = 'Unique'

针对您的数据库。

你应该得到结果:

Constraint_Name                  Column_Name
----------------------------------------------------- 
IX_InternalLocationDateMexri     LocationID 
IX_InternalLocationYpallhlosId   Name

这意味着在这两列上放置了UNIQUE INDEX,禁止任何重复对插入。