mysql外键级联操作_Mysql 外键级联
如果表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 外键级联相关推荐
- Mysql级联操作,添加外键和删除外键
目录 1.级联操作CASCADE 2.删除外键,和添加外键 1.级联操作CASCADE 1.级联删除语法 on delete cascade 书写的位置:创建表的字段后边 2.级联修改语法 on up ...
- mysql 外键详解_mysql外键详解
1.1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确 ...
- mysql 外部键约束名_MySQL中外键的创建、约束以及删除
前言 在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前 ...
- mysql表的级联操作_mysql表之间的关系及级联操作
表之间的关系 foreign key 外键约束,用于指向另一个表的主键字段 # 创建表的时候添加外键 create table teacher( id int primary key auto_inc ...
- mysql 主键 聚集索引_MySQL主键索引和聚焦索引
主键索引 主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录.一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL. 在MySQL ...
- mysql 主键 默认索引_mysql 主键和默认 设为索引的规则
一.mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引 二.mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a 和 b字段和c字段..., 默认建的主键索 ...
- mysql怎么防止误操作_MySQL数据库防止人为误操作的实例讲解
有不少开发人员在操作MySQL数据库的时候都遇到过误操作的情况,例如更新数据库的时候update语句忘记加上where条件,就会造成极为悲剧的结果.本文就针对防止MySQL数据库误操作的方法做出如下详 ...
- mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒
我已经阅读了很多其他线程,但我仍然感到难过.我创建了两个非常简单的表作为完整性检查,并且无法让它们执行级联删除,因此需要一些帮助. CREATE TABLE `test1` ( `test1_ID` ...
- mysql外键无法删除_mysql外键无法删除数据的情况
最近碰到一次在msyql主从删除数据,居然报错 delete from pt_game_server where id=2; ERROR 1451 (23000): Cannot delete or ...
最新文章
- 外部样式表声明的样式并不会进入style对象
- android 屏幕旋转180度
- Laravel核心解读--完结篇
- 3.6 迁移故障恢复
- C# 系统应用之窗体最小化至任务栏及常用操作
- 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
- 在Global中Application_Error事件处理错误信息
- 从React 编程到好莱坞
- 枚举函数enumerate
- mac地址修改_【电脑知识】在纯DOS下更改BIOS中网卡MAC地址教程
- MySQL数据库(10)----IN 和 NOT IN 子查询
- 时间序列-N_LSTM
- 【物理应用】基于matlab GUI工程供配电系统【含Matlab源码 1051期】
- 希腊字母|罗马数字|中文数字大写
- Linux-shell篇之while用法
- MT5自定义均线指标(含弹窗、App、邮箱预警)
- panabit高级流控
- 高仙与吾尚联合打造“人+机+纳米材料”石材养护新模式 首批60落地上海环球港
- amazon - FileZilla 连接 amazon云服务器
- 2018 IROS,这款来自韩国的双臂机器人不容小觑!
热门文章
- Mysql学习笔记day3 --三天学完mysql所有知识点
- windows 下的CACTI的安装方法
- [微服务]API 路由管理--Gateway网关
- 重装也无法修复此计算机,win10系统重装|Win10“重置此电脑”时出现问题解决教程...
- 关于administrator没有管理员权限问题
- 如何开好项目启动大会
- 为什么要使用Typescript
- Best practices for a new Go developer
- 第二课堂计算机记录,第二课堂计算机小结
- JAVA生成高强度密码(包含随机数字+随机英文大小写)