SQL 唯一键违规
SQL Unique Key Violation
我遇到了唯一键冲突,我不确定为什么,这是我的情况。
我有一个包含以下字段的 table:
ID, LocationID, Name, Description, Dewey
ID
显然是主键, LocationID
是链接到 Location
table 的外键,其他字段只是 varchar
没有关联关系的字段。
当我插入一行时,LocationID
和 Name
与 table 中的另一行具有相同的值,我收到此错误:
Violation of UNIQUE KEY constraint 'IX_InternalLocation'. Cannot insert duplicate key in object 'dbo.InternalLocation'. The statement has been terminated.
如果这些字段中的任何一个不同,我可以毫无问题地插入记录。这对我来说似乎很奇怪,因为这些行都不是 table 的唯一标识符。
出于某种原因,数据库似乎认为这些字段一起形成了一个键,但事实并非如此,当我查看 table 属性时,事实并非如此。任何帮助将不胜感激。
运行 这个查询:
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
,禁止插入任何重复的对。
我遇到了唯一键冲突,我不确定为什么,这是我的情况。 我有一个包含以下字段的 table:
ID, LocationID, Name, Description, Dewey
ID
显然是主键, LocationID
是链接到 Location
table 的外键,其他字段只是 varchar
没有关联关系的字段。
当我插入一行时,LocationID
和 Name
与 table 中的另一行具有相同的值,我收到此错误:
Violation of UNIQUE KEY constraint 'IX_InternalLocation'. Cannot insert duplicate key in object 'dbo.InternalLocation'. The statement has been terminated.
如果这些字段中的任何一个不同,我可以毫无问题地插入记录。这对我来说似乎很奇怪,因为这些行都不是 table 的唯一标识符。
出于某种原因,数据库似乎认为这些字段一起形成了一个键,但事实并非如此,当我查看 table 属性时,事实并非如此。任何帮助将不胜感激。
运行 这个查询:
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
,禁止插入任何重复的对。