mysql外键写了会怎么样_mysql使用外键会影响性能吗

news/2025/1/25 2:34:11/

推荐答案

567836b20cdd31cd5c153024342e8487.png

孔雀丫丫

2015.04.10

567836b20cdd31cd5c153024342e8487.png

采纳率:87%    等级:38

已帮助:18万人

外键约束对子表的含义:

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

外键约束对父表的含义:

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

. cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录

On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用

. set null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null

要注意子表的外键列不能为not null

On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用

. No action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

这个是ANSI SQL-92标准,从mysql4.0.8开始支持

. Restrict方式

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

. Set default方式

解析器认识这个action,但Innodb不能识别,不知道是什么意思...

注意:trigger不会受外键cascade行为的影响,即不会解发trigger

在mysql中,与SQL标准相违背的三点

1. 如果在父表中有多个key值相同,那么在进行外键check时,会当成有相同key值的其他行不存在; 比如当定义了一个restrict行为外键时,一个子表行对应到多个父表行(具有相同key值), Innodb不允许删除父表上的所有这些行

2. 父子表是同一个表,自我参照时不允许指定on update cascade, on update set null

从mysql4.0.13开始,允许同一个表上的on delete set null

从mysql4.0.21开始,允许同一个表上的on delete cascade

但级联层次不能超出15

3, Innodb在检查unique,constraint约束时,是row by row而不是语句或事务结束;

SQL标准中对constraint的检查是在语句执行完成时

00分享举报

此回答由管理员  this_is_Null   推荐为最佳回答。


http://www.ppmy.cn/news/608108.html

相关文章

数据治理(四):数据仓库数据质量管理

文章目录 数据仓库数据质量管理 一、“商户营收统计”业务

Camera Lens Coating

Camera Lens Coating Coating Progress 转换镜头,根据要求进行OEM和设计。 光学元件:望远镜、显微镜、相机和数码相机镜头、放大镜头和远摄镜头、定心镜头、投影镜头、投影镜头、照明镜头、球面和非球面镜头、扫描镜头等。 不同透镜的应用 土建&#x…

C++ 函数的模板的使用

函数模板 函数的模板不是实体的函数,编译器不能为其生成可执行代码, 函数模板的一般形式: template<类型参数列表> 返回类型 函数名(实行参数列表) { // code } 为什么要使用函数模板 看下面的重载函数 int add(int a,int b){return a b; }double add(double a…

mysql sql w3cschool_SQL复习(w3school)笔记

SQL基础1.SQL对大小写不敏感2.DML(数据操作语言)与DDL(数据定义语言)a) DMLSELECTUPDATEDELETEINSERT INTOb) DDLCREATE DATABASEALTER DATABASECREATE TABLEALTER TABLEDROP TABLECREATE INDEXDROP INDEX3.DISTINCT:去除重复值a) SELECT DISTINCT 列名FROM表名4.WHERE子句a) 值…

数据治理(五):元数据管理

文章目录 元数据管理 一、大数据中为什么要元数据管理 二、元数据管理工具-Atlas

camera中LENS和SENSOR的CRA是如何搭配的?

camera中LENS和SENSOR的CRA是如何搭配的&#xff1f; camera中&#xff0c;lens和sensor的搭配是非常关键的问题。但这两者是如何搭配的呢&#xff1f; 一般在Sensor data sheet中会附有全视场CRA参考值&#xff0c;不同sensor厂家有不同的要求&#xff0c;可以按照这个来做设计…

C++ 类模板的使用

类模板的一般形式: template <类型参数表> class 类模板名{成员函数和成员变量 }; 用类模板定义对象的写法如下&#xff1a; 类模板名<类型参数表> 对象名(构造函数实际参数表); 类模板有无参构造函数&#xff1a; 类模板名 <类型参数表> 对象名; demo…

数据治理(六):编译Atlas安装包

文章目录 编译Atlas安装包 一、Atlas2.1.0源码下载 二、Atlas与其他框架依赖 三、安装Hadoop3.1.4版本 1、停止HDFS集群&#xff0c;在Zookeeper中删除HDFS对应的元数据目录 2、删除各个节点上的HDFS安装包 3、删除5个节点上的/opt/data/目录下除了zookeeper外的目录 4…