首页 > 代码库 > mysql 外键(FOREIGN KEY)

mysql 外键(FOREIGN KEY)

互为外键的两个字段必须都是主键

两个表必须是InnoDB表,MyISAM表暂时不支持外键

外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如inttinyint可以,而intchar则不可以;

外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。

创建外键的方式:

例子:

  1、alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id);

  2、

    CREATE TABLE `tb_active` (
       `id` int(11) NOT NULL AUTO_INCREMENT,
       `title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
       `content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
       `user_id` int(11) NOT NULL,
       PRIMARY KEY (`id`),
       KEY `user_id` (`user_id`),
       KEY `user_id_2` (`user_id`),
       CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) on delete cascade
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
关键字     含义
 CASCADE    删除包含与已删除键值有参照关系的所有记录
 SET NULL   修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)
 RESTRICT   拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)
 NO ACTION  啥也不做

mysql 外键(FOREIGN KEY)