2016-05-01 91 views
0

下面是关于MySQL创建表我的SQL语句,但还是警告说,有重复键(我无法找到任何一个被复制?创建表上的MySQL重复键?

CREATE TABLE EmployeeSkill (
    empId Integer NOT NULL, 
    skillId Integer NOT NULL, 
    skillLevel Integer NULL, 
    CONSTRAINT empSkillPk PRIMARY KEY(empId, skillId), 
    CONSTRAINT empFk FOREIGN KEY(empId) REFERENCES Employee(empId), 
    CONSTRAINT skillFk FOREIGN KEY(skillId) REFERENCES Skill(skillId) 
) 

不知道为什么...任何人有什么线索?

+0

@问题是我无法在此创建语句中找到重复项。 –

+0

@Harry正在创建表格。 –

回答

0

我发现。它! 我用我的数据库

select * 
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
where CONSTRAINT_TYPE = 'FOREIGN KEY' 

下面的语句我发现,其他表所占用的外键。只需简单地使用其他外键,它就可以工作。

0

你在表的主键:PRIMARY KEY(empId, skillId)这个错误意味着将empIdskillId已经存在于表中该组合可以检查它

SELECT * 
FROM EmployeeSkill 
WHERE empId = @insertEmpId AND skillId = @insertSkillId 
+0

问题是我没有EmployeeSkill表,但怎么可能重复呢?! –

+0

您正在使用外键。 MySQL将检查父表是否具有引用列上的唯一索引。 'Employee'的'empId'主键? ''技能''skillId'?如果是这样,在正常情况下,你不会在这个列中有重复的值。但也许这些不是唯一的/主键? – Andrew