通过外键的MySql唯一字段

通过外键的MySql唯一字段,mysql,sql,Mysql,Sql,我不确定这个问题是否已经被问过了,因为我觉得我的问题不是很清楚 假设我有这张桌子: CREATE TABLE IF NOT EXISTS EntrepriseSpecialites ( id_EntrepriseSpecialite INT AUTO_INCREMENT PRIMARY KEY ,id_Entreprise INT ,id_Specialite INT UNIQUE ); 目前,我的表中只能有一个具有相同值的id_Specialite,但是否有办法通过i

我不确定这个问题是否已经被问过了,因为我觉得我的问题不是很清楚

假设我有这张桌子:

CREATE TABLE IF NOT EXISTS EntrepriseSpecialites
(
    id_EntrepriseSpecialite INT AUTO_INCREMENT PRIMARY KEY
    ,id_Entreprise INT
    ,id_Specialite INT UNIQUE
);
目前,我的表中只能有一个具有相同值的id_Specialite,但是否有办法通过id_Enterprise只创建一个唯一的id_Specialite

例如:

    id_EntrepriseSpecialite | id_Entreprise | id_Specialite
    1 | 1 | 1
    2 | 2 | 1
    3 | 2 | 4
    4 | 2 | 1 <- ops id_Entreprise 2 already have the id_Specialite 1
    5 | 3 | 1
id_enterprise Specialite | id_enterprise | id_Specialite
1 | 1 | 1
2 | 2 | 1
3 | 2 | 4

4 | 2 | 1为什么不将
d_enterprise
id_Specialite
作为您的c
复合/复合主键
,例如:

CREATE TABLE IF NOT EXISTS EntrepriseSpecialites
(
 id_Entreprise INT
 ,id_Specialite INT
 , PRIMARY KEY (id_Entreprise, id_Specialite)
);

请参见

为什么不将
id\u enterprise
id\u Specialite
设置为您的
Composite主键
,使其始终唯一?我想您只需要在两列上设置一个复合
unique
约束:
id\u Specialite
-检查此线程: