MySQL外键约束

MySQL外键约束,mysql,foreign-keys,Mysql,Foreign Keys,我在外键约束方面遇到了一些问题,并且可能没有正确地组合代码 其思想是airports表只接受apType表中的类型值。如果类型不在apType表中,则应生成错误。但是,我一直在测试它,我无法让它生成一个错误,它只是将输入的类型放入数据库中,并对此感到满意 机场表: CREATE TABLE `airport`( `id` int primary key AUTO_INCREMENT, `name` varchar(255) NOT NULL, `rwyCount` int, `lat` flo

我在外键约束方面遇到了一些问题,并且可能没有正确地组合代码

其思想是airports表只接受apType表中的类型值。如果类型不在apType表中,则应生成错误。但是,我一直在测试它,我无法让它生成一个错误,它只是将输入的类型放入数据库中,并对此感到满意

机场表:

 CREATE TABLE `airport`(
`id` int primary key AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`rwyCount` int,
`lat` float(6),
`lon` float(6),
`type` varchar(255), 
constraint FOREIGN KEY (type) REFERENCES apType(type) match simple
)ENGINE=MyISAM DEFAULT CHARSET=latin1;
apType表格:

CREATE TABLE `apType`(
`id` int primary key AUTO_INCREMENT,
`type` varchar(255) NOT NULL
 )ENGINE=MyISAM DEFAULT CHARSET=latin1;
为apType插入值(这些是唯一有效的值):

插入应生成错误的内容:

 insert into `airport` (`name` , `rwyCount` , `type` , `lat` , `lon`) values ('failland', 3 , 'space', 45.588611, -122.5975);

有人能解决这个问题吗

您正在使用的DB引擎中似乎尚未实现外键。


也许考虑切换到NYNDB?

网站上有很多文章来解释这一点。你试过使用你最喜欢的搜索引擎吗?这是一项非常有成效的学习技能——研究自己问题答案的能力。我确实这样做了,而且许多答案提供了有用的信息,但没有任何东西能够解决我的问题。我尝试了,我得到了一个#1005-无法创建表“todtm db.airport”(errno:150)错误。你必须做的是,在创建第二个表之前,先创建一个索引。在apType(type)上创建索引ix。这是因为您没有引用主键:)然后,创建表airport。我完全忘了它引用的不是主键。修正它,它工作,并给出正确的错误。非常感谢。
 insert into `airport` (`name` , `rwyCount` , `type` , `lat` , `lon`) values ('failland', 3 , 'space', 45.588611, -122.5975);