MySQL:简述MySQL的外键约束
MySQL:简述MySQL的外键约束
MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。
一、外键约束的含义:
1. 外键约束对子表的含义:当在子表中insert或update一条数据时,如果在主表中找不到候选键,那么就不允许该操作。
2. 外键约束对主表的含义:当在主表中insert或update数据时,如果主表的候选键对应的有子表的外键值,那么就不允许该操作。
二、外键约束的使用条件:
1. 两张表必须都是InnoDB表,并且它们没有临时表。
2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。
3. 建立外键关系的对应列必须建立了索引。
三、外键约束的动作:
如果子表试图创建一个在父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作。
如果父表试图UPDATE或者DELETE任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。
四、 外键约束的操作
1. 外键约束的启动
SET FOREIGN_KEY_CHECKS = 1;
2. 外键约束的禁用
SET FOREIGN_KEY_CHECKS = 0;
create table table_name ( 字段名1 字段属性1, 字段名2 字段属性2, 字段名3 字段属性3, [add constraint 外键name] foreign key (字段名) references 主表(主表主键名) ); create table table_name ( 字段名1 字段属性1, 字段名2 字段属性2, 字段名3 字段属性3 ); alter table table_name add constraint 外键name foreign key (字段名) references 主表(主表主键名);
4.外键约束的删除
alter table table_name drop 外键name;
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179330.html原文链接:https://javaforall.net
