带FK的表是指带有两个PK的表

时间:2014-10-18 16:26:47

标签: mysql foreign-keys

我将table1的id和name列都作为PK,table2将有一个引用table1列的FK:name,当我在MySQL工作台中创建FK时,我收到此错误:

ERROR 1215: Cannot add foreign key constraint

table1:级别,id enum(),名称varchar(20)两个PK。

table2:类,id bigint PK AutoIncrement,level_name varchar(20),number int。

level_name是PK名称的FK

1 个答案:

答案 0 :(得分:0)

添加外键需要关注某些事情,比如你在case1中的情况,你已经使PRIMARY KEY (id,name)达到了水平,而在第二个表中你引用level_name是你需要的外键错误引用类表中的列对,以便从table1 level_id创建相同类型的id列的外键添加level,然后引用该对FOREIGN KEY (level_id, level_name)到表level,请参阅下面的表格示例模式

CREATE TABLE `level` (
  `id` enum('1','2','3','4','5') NOT NULL,
  `name` varchar(20) NOT NULL,
  PRIMARY KEY (`id`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `class` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `level_name` varchar(20) NOT NULL,
  `level_id` enum('1','2','3','4','5') DEFAULT NULL,
  `number` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_key` (`level_id`,`level_name`),
  CONSTRAINT `fk_key` FOREIGN KEY (`level_id`, `level_name`)
  REFERENCES `level` (`id`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Demo