繁体   English   中英

MySQL外键约束

[英]MySQL Foreign Key Constraint

我遇到了一些外键约束的问题,而且可能没有正确地将代码放在一起。

这个想法是,机场表只接受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 `apType` (`type`) VALUES ('private'),('public'),('military');

插入应该生成错误:

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

有人能解决这个问题吗?

看来,您正在使用的数据库引擎中尚未实现外键。 为什么MySQL的MyISAM引擎不支持外键?

也许考虑转换到InnoDb?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM