最近几周我一直在慢慢学习SQL。我已经掌握了所有关系代数以及关系数据库如何工作的基础知识。我现在想做的是学习如何实现它。
我遇到的一个绊脚石是MySQL中的外键。除了MySQL拥有的InnoDB存储模式中存在的其他内容外,我似乎找不到其他的东西。
什么是在MySQL中实现的外键的简单示例?
这是我编写的架构的一部分,如果您宁愿指出我的缺点而不是向我展示一个有效的示例,那么它似乎并不起作用。
CREATE TABLE `posts` ( `pID` bigint(20) NOT NULL auto_increment, `content` text NOT NULL, `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `uID` bigint(20) NOT NULL, `wikiptr` bigint(20) default NULL, `cID` bigint(20) NOT NULL, PRIMARY KEY (`pID`), Foreign Key(`cID`) references categories, Foreign Key(`uID`) references users ) ENGINE=InnoDB;
假设您的类别和用户表已经存在,并且分别包含cID和uID作为主键,则这应该起作用:
CREATE TABLE `posts` ( `pID` bigint(20) NOT NULL auto_increment, `content` text NOT NULL, `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `uID` bigint(20) NOT NULL, `wikiptr` bigint(20) default NULL, `cID` bigint(20) NOT NULL, PRIMARY KEY (`pID`), Foreign Key(`cID`) references categories(`cID`), Foreign Key(`uID`) references users(`uID`) ) ENGINE=InnoDB;
references子句中的列名称是必需的。
references