Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL

如果在父表中找不到候选键,则不允许在子表上进行insert/update

外键约束对父表的含义:

在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下

1 . cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录 
On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用

2. set null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null 
要注意子表的外键列不能为not null 
On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用

3 . No action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 
这个是ANSI SQL-92标准,从mysql4.0.8开始支持

4. Restrict方式

同no action, 都是立即检查外键约束

5. Set default方式

解析器认识这个action,但Innodb不能识别,不知道是什么意思... 
  
   注意:trigger不会受外键cascade行为的影响,即不会解发trigger

原文地址:https://www.cnblogs.com/kinwing/p/11102244.html

时间: 2024-10-16 08:11:20

Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL的相关文章

MySql 外键约束 CASCADE、SET NULL、RESTRICT、NO ACTION

MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束. CASCADE 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 SET NULL 在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null) NO ACTION 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 RESTRICT 同no action, 都是

mysql中外键的一些基本操作

1 带外键的两个表,当插入记录的时候必须先在父表中插入记录,然后在子表中插入记录 2 父表 3 mysql> create table provinces( 4 -> id smallint unsigned primary key auto_increment, 5 -> pname varchar(30) not null 6 -> ); 7 8 查看数据表引擎 9 mysql> show create table provinces; 10 +-----------+-

关于mysql中外键关联的一些个人理解

在我看来hibernate最麻烦的一件事就是配置外键关联,稍微不慎就会出现配置错误的情况,现在的项目全部都是在使用mybaits,而mybaits使用就简单的多,起码虽然说是要自己写mysql语句,但是起码这种做法在现阶段的项目开发中还是非常的流行,以前经常听到眼言论说用hibernate开发会比mybaits要来得快,其实那应该 是对于高手而言,但是绝大部分如我这群菜逼而言,老老实实的写sql语句会更好一点,废话不多说,今天主要是谈谈外键关联对在项目开发中的影响. 表的关联,在某种程度上来说只

mysql中外键的创建与删除

外键的创建 方法1:创建表的时候设置(外键名随机生成) 1.前提条件,必须要有一个主表,这里设为persons 2.主表中必须设置主键字段primary key,这里设为id_p //创建数据库database(test) create database if not exists test character set utf8; //创建主表(persons) create table if not exists persons( id_p int not null, lastName var

MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL

MySQL外键设置中的的属性含义: cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null 要注意子表的外键列不能为not null No action方式 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 Restrict方式 同no action, 都是立即检查外键约束 Set default方式 父表有变更

Mysql 外键设置

MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦其实这正式外键在强制你保证数据的完整性和一致性.这是好事儿.    例如:    有一个基础数据表,用来记录商品的所有信息.其他表都保存商品ID.查询时需要连表来查询商品的名称

MySQL之外键约束

MySQL之外键约束 MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: [CONSTRAINT [symbol]] FOREIGN KEY    [index_name] (index_col_name, ...)    REFERENCES tbl_name (index_col_name,...)    [ON DELETE reference_option]    [ON UPDATE refere

mysql外键(FOREIGNKEY)介绍及使用注意事项

一.基本概念 1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引.用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引. 2.外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接. 3.如果需要更好的性能,并且不需要完整性检查,可以选择使用MyISAM表类型,如果

mysql外键实战

一.基本概念 1.MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户 进行明确的索引.用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引. 2.外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接. 3.如果需要更好的性能,并且不需要完整性检查,可以选择使用MyISAM表类型,如果想要在MySQL中根据参照完