Mysql开发中的外键与参照完整性
pecies代码是否存在,如果发现不存在,就拒绝该记录。当你输入正确代码的,可以与以上做比较。
mysql> INSERT INTO zoo VALUES (1, ''Harry'', 3); Query OK, 1 row affected (0.06 sec) 这里,MySQL核查species表以查看species代码是否存在,当发现存在,允许记录保存在zoo表中。 为了删除一个外键关系,首先使用SHOW CREATE TABLE找出InnoDB的内部标签,如表B所示: 表 B +-------+---------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------+ | zoo | CREATE TABLE `zoo` ( `id` int(4) NOT NULL default ''0'', `name` varchar(50) NOT NULL default '''', `FK_species` tinyint(4) NOT NULL default ''0'', KEY `FK_species` (`FK_species`), CONSTRAINT `zoo_ibfk_1` FOREIGN KEY (`FK_species`) REFERENCES `species` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------+ 然后使用带有DROP FOREIGN KEY 语句的ALTER TABLE命令,如以下: mysql> ALTER TABLE zoo DROP FOREIGN KEY zoo_ibfk_1; Query OK, 1 row affected (0.11 sec) Records: 1 Duplicates: 0 Warnings: 0 为了将一个外键添加到一个现成的表中,使用ADD FOREIGN KEY的 ALTER TABLE语句指定合适的域作为一个外键: mysql> ALTER TABLE zoo ADD FOREIGN KEY (FK_species) REFERENCES species (id); Query OK, 1 rows affected (0.11 sec) Records: 1 Duplicates: 0 Warnings: 0 如以上例子解释的,外键在捉摸数据入口错误上起着重要的作用,由此可建立更为强健更加集成的数据库。另一方面值得提到的是,执行外键核实是内部资料处理的过程,且不同表之间指定复杂的内部关系可以导致数据库的性能下降。所以,在参照完整性与性能考虑之间找到平衡点相当重要,而使用外键就是能够确保性能与稳健之间的最优结合。 我期望本期的有关外键的介绍对你有所好处,你将会在下回的MySQL数据库设计中感受到外键的好处。编程快乐! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |