mysql的外键探讨
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强。关于完整性,关连性我举个例子,大家就会明白了。 有二张表,一张是用户表,一张是订单表: 1,如果我删除了用户表里的用户,那么订单表里面根这个用户有关的数据,就成了无头数据了,不完整了。 2,如果我在订单表里面,随便插入了一条数据,这个订单在用户表里面,没有与之对应的用户。这样数据也不完整了。 如果有外键的话,就方便多了,可以不让用户删除数据,或者删除用户的话,通过外键同样删除订单表里面的数据,这样也能让数据完整 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 二,使用foreign key,遵守以下几点规则 1,有外键约束的表,必须是innodb型 2,外键约束的二个表,本来就相关系的表,并且要有索引关系,如果没有,创建外键时也可以创建索引。 3,不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中,这是因为对这些列的索引必须总是包含一个前缀长度。 4,mysql外键的名子在数据库内要是唯一的 三,创建foreign key的语法规则 外键的定义语法: [CONSTRAINT