我将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
答案 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;