我遇到了一些外鍵約束問題,可能沒有正確地將代碼放在一起。MySQL外鍵約束
這個想法是,機場表將只接受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);
任何人都可以找出這個問題嗎?
網絡上有文章解釋了這一點。你有沒有嘗試使用你最喜歡的搜索引擎?這是一種非常高效的學習技能 - 研究自己對自己問題的答案的能力。 – MatBailie
我確實,許多答案提供了有用的信息,但沒有能夠解決我的問題 –