我收到了唯一密钥违规,我不知道为什么,这是我的方案。 我有一个包含以下字段的表:
ID, LocationID, Name, Description, Dewey
ID
显然是主键,LocationID
是链接到Location
表的外键,其他字段只是varchar
字段,没有关联关系它们。
当我插入一行LocationID
和Name
与表中另一行的值相同时,我收到此错误:
违反UNIQUE KEY约束' IX_InternalLocation'。无法在对象' dbo.InternalLocation'中插入重复键。声明已经终止。
如果其中任何一个字段不同,我可以插入记录没问题。这对我来说似乎很奇怪,因为这些行都不是表的唯一标识符。
出于某种原因,数据库一起认为字段形成了一个键,但这不是它应该如何,当我查看表属性时,它不是这样的。任何帮助将不胜感激。
答案 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
,禁止任何重复对插入。