通过外键的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
-检查此线程: