我的Shade颜色看起来像这样
CREATE TABLE `Shade` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`shade_name` varchar(250) DEFAULT NULL,
`color_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=156 DEFAULT CHARSET=latin1;
我有Color
表需要与Shade
表有一对多的关系。所以这就是我所做的:
CREATE TABLE `Color` (
`id` int(11) unsigned NOT NULL,
`color_name` varchar(250) DEFAULT NULL,
PRIMARY KEY (`id`)
,foreign key (`id`) references shade (`color_id`)
on delete cascade
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
但我收到了一个错误:Can't create table: errno: 150
答案 0 :(得分:0)
您正在错误的地方定义外键。
Color
是您的“主”表,因此它不应定义任何外键:
CREATE TABLE `Color` (
`id` int(11) unsigned NOT NULL,
`color_name` varchar(250) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Shade
是“详细信息”表 - 它引用Color
(由它包含的color_id
列显示),因此它应该保存外键的定义:
CREATE TABLE `Shade` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`shade_name` varchar(250) DEFAULT NULL,
`color_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`color_id`) references Color (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=156 DEFAULT CHARSET=latin1;