如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。外键主要用来保证数据的完整性和一致性

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

外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;

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

创建外键语法:

代码如下 复制代码

[CONSTRAINT [symbol]] FOREIGN KEY

[index_name] (index_col_name, ...)

REFERENCES tbl_name (index_col_name,...)

[ON DELETE reference_option]

[ON UPDATE reference_option]

reference_option:

RESTRICT | CASCADE | SET NULL | NO ACTION

如果子表试图创建一个在父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作。如果父表试图UPDATE或者DELETE任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。InnoDB支持5种不同的动作,如果没有指定ON DELETE或者ON UPDATE,默认的动作为RESTRICT:

1. CASCADE: 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。

2. SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。

3. NO ACTION: InnoDB拒绝删除或者更新父表。

4. RESTRICT: 拒绝删除或者更新父表。指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。

5. SET DEFAULT: InnoDB目前不支持。

外键约束使用最多的两种情况:

1)父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败;

2)父表更新时子表也更新,父表删除时子表匹配的项也删除。

前一种情况,在外键定义中,我们使用ON UPDATE CASCADE ON DELETE RESTRICT;

后一种情况,可以使用ON UPDATE CASCADE ON DELETE CASCADE。

mysql外键级联操作_Mysql 外键级联相关推荐

  1. Mysql级联操作,添加外键和删除外键

    目录 1.级联操作CASCADE 2.删除外键,和添加外键 1.级联操作CASCADE 1.级联删除语法 on delete cascade 书写的位置:创建表的字段后边 2.级联修改语法 on up ...

  2. mysql 外键详解_mysql外键详解

    1.1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确 ...

  3. mysql 外部键约束名_MySQL中外键的创建、约束以及删除

    前言 在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前 ...

  4. mysql表的级联操作_mysql表之间的关系及级联操作

    表之间的关系 foreign key 外键约束,用于指向另一个表的主键字段 # 创建表的时候添加外键 create table teacher( id int primary key auto_inc ...

  5. mysql 主键 聚集索引_MySQL主键索引和聚焦索引

    主键索引 主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录.一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL. 在MySQL ...

  6. mysql 主键 默认索引_mysql 主键和默认 设为索引的规则

    一.mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引 二.mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a 和 b字段和c字段..., 默认建的主键索 ...

  7. mysql怎么防止误操作_MySQL数据库防止人为误操作的实例讲解

    有不少开发人员在操作MySQL数据库的时候都遇到过误操作的情况,例如更新数据库的时候update语句忘记加上where条件,就会造成极为悲剧的结果.本文就针对防止MySQL数据库误操作的方法做出如下详 ...

  8. mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒

    我已经阅读了很多其他线程,但我仍然感到难过.我创建了两个非常简单的表作为完整性检查,并且无法让它们执行级联删除,因此需要一些帮助. CREATE TABLE `test1` ( `test1_ID` ...

  9. mysql外键无法删除_mysql外键无法删除数据的情况

    最近碰到一次在msyql主从删除数据,居然报错 delete from pt_game_server where id=2; ERROR 1451 (23000): Cannot delete or ...

最新文章

  1. 外部样式表声明的样式并不会进入style对象
  2. android 屏幕旋转180度
  3. Laravel核心解读--完结篇
  4. 3.6 迁移故障恢复
  5. C# 系统应用之窗体最小化至任务栏及常用操作
  6. 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
  7. 在Global中Application_Error事件处理错误信息
  8. 从React 编程到好莱坞
  9. 枚举函数enumerate
  10. mac地址修改_【电脑知识】在纯DOS下更改BIOS中网卡MAC地址教程
  11. MySQL数据库(10)----IN 和 NOT IN 子查询
  12. 时间序列-N_LSTM
  13. 【物理应用】基于matlab GUI工程供配电系统【含Matlab源码 1051期】
  14. 希腊字母|罗马数字|中文数字大写
  15. Linux-shell篇之while用法
  16. MT5自定义均线指标(含弹窗、App、邮箱预警)
  17. panabit高级流控
  18. 高仙与吾尚联合打造“人+机+纳米材料”石材养护新模式 首批60落地上海环球港
  19. amazon - FileZilla 连接 amazon云服务器
  20. 2018 IROS,这款来自韩国的双臂机器人不容小觑!

热门文章

  1. Mysql学习笔记day3 --三天学完mysql所有知识点
  2. windows 下的CACTI的安装方法
  3. [微服务]API 路由管理--Gateway网关
  4. 重装也无法修复此计算机,win10系统重装|Win10“重置此电脑”时出现问题解决教程...
  5. 关于administrator没有管理员权限问题
  6. 如何开好项目启动大会
  7. 为什么要使用Typescript
  8. Best practices for a new Go developer
  9. 第二课堂计算机记录,第二课堂计算机小结
  10. JAVA生成高强度密码(包含随机数字+随机英文大小写)