我尝试创建外键但显示错误
"错误代码1215:无法添加外键约束"
我尝试修复它,但它无法正常工作。
这是我的剧本:
drop database if exists `manage_Student`;
create database if not exists `manage_Student` default character set utf8;
use `manage_Student`;
drop table if exists `students`;
create table if not exists `students` (
`id` smallint(8) not null,
`name` varchar(50) not null,
`id_pos` smallint (10) not null,
`address` varchar(50),
`gender` varchar(7) check (gender in ('male', 'female')),
primary key (`id`),
constraint fk_stupos foreign key (`id_pos`) references `position` (`id_pos`)
) engine = InnoDB default char set = utf8;
drop table if exists `position`;
create table if not exists `position` (
`id_pos` smallint (10) not null,
`position` varchar (50),
primary key (`id_pos`)
) engine = InnoDB default char set = utf8;
答案 0 :(得分:0)
首先创建position
表。它必须存在才能将其用于foreign key
约束。
Here是一个SQL小提琴。
另请注意:您对gender
有检查限制。 MySQL接受check
约束的语法。但是,它实际上并没有做任何事情。这是为了提高与其他数据库的兼容性。
如果您确实想要检查值,则需要使用性别参考表(以及另一个外键约束)或enum
类型。