mysql外键写了会怎么样_mysql使用外键会影响性能吗-程序员宅基地

技术标签: mysql外键写了会怎么样  

推荐答案

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   推荐为最佳回答。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35924353/article/details/113291784

智能推荐

SATI下载-安装-使用 一看便懂+spss聚类(附安装包)-程序员宅基地

文章浏览阅读1.1w次,点赞22次,收藏91次。1.下载安装包网盘提取:链接:https://pan.baidu.com/s/1jeZq3v9Lby5DDQUa7vbNoQ提取码:msn72.安装解压---点击.exe文件进行安装----使用3.使用实例如果有数据可以直接导入进行分析,这里是第一次使用,数据获取也分享一下首先打开知网,输入“人工智能”进行检索选择60条数据进行导出 打开SATI软件,选择刚刚导出的文件,1.2.3部完成后,点击转换按钮将转换后的文件保存,点击下面ok,i ..._sati下载

ps自定义形状工具_Acorn for Mac(轻量级图片处理工具)-程序员宅基地

文章浏览阅读573次。Acorn for Mac是一款运行在Mac OS X平台上的一款轻量级图片处理软件,它具备全面的图像编辑工具、圆形文字工具、矢量工具、各种照片效果等,如果你非常想编辑一些照片,但又不想打开类似于PS那样的大型图片处理软件,不妨可以试试这款acorn for mac,acorn mac 下载拥有ps的基础工具和滤镜效果,允许用户对图片进行移动和调整形状,作为ps的轻量级替代者,它功能强大,小巧简便..._ps 复制剪切粘贴形状下载 csdn

android原生!史上最全的Android面试题集锦,快来收藏!_安卓面试题-程序员宅基地

文章浏览阅读337次。开头在大厂,写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西,而是很多工程师晋升,打造自己话语权的武器。 我这两年在组内的深刻体会就是,大部分厉害的高级工程师(不包括那些纯混日子靠资历晋升的人),写文档的能力一点也不含糊,很能抓住上级和项目的G点。可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工程师的普遍的困惑。这是因为大部分刚刚入行的朋友有一个很深的误区,就是他们以为做软件工程是一个和计算机打交道的工作,其实不然。_安卓面试题

C# 之 WPF 统计图表开发方案_c# wpflivechart-程序员宅基地

文章浏览阅读9.2k次,点赞8次,收藏72次。C# 之 WPF 统计图表开发文档一、前言二、环境配置1、开发环境2、加载 LiveCharts 库3、添加必须的头文件三、基础图形1、柱状图一、前言本项目的统计图使用LiveCharts 控件集成。LiveCharts, 官网:https://lvcharts.net 是一款简单,灵活,交互式和强大的 DOTNET数据可视化图表控件,内置多种统计图表,可满足本项目的需求。二、环境配置..._c# wpflivechart

DBeaver 快捷键大全_dbeaver快捷键-程序员宅基地

文章浏览阅读5k次,点赞7次,收藏23次。有些快捷键未经验证,如有问题望不吝指正!ctrl + enter 执行sqlctrl + \ 执行sql,保留之前窗口结果ctrl + alt + ↑ 向上复制一行ctrl + alt + ↓ 向下复制一行ctrl + shift + F 对sql语句进行格式化,对于很长的sql语句很有用ctrl + d 删除当前行alt + ↑ 向上选定一条sql语句alt + ↓ 向下选定一条sql语句ctrl + / 行注释ctrl + shift+ / 块注释ctrl + f 查找、替换_dbeaver快捷键

【基础】WebView浏览器组件-程序员宅基地

文章浏览阅读5.4k次。ad_webview

随便推点

u3d_6.如何销毁—nunityengine.objec及其子类-程序员宅基地

文章浏览阅读2.2k次。题目归类区(看题目字体颜色识第几部分)ps :下面题目可能稍有点多,翻页会较麻烦,根据题目的颜色辨别是第几部分吧(超链接功能不会,也懒得做了)第一部分1. 请简述值类型与引用类型的区别2.C# 中所有引用类型的基类是什么3. 请简述 ArrayList 和 List 的主要区别4. 请简述 GC (垃圾回收)产生的原因,并描述如何避免?5. _6.如何销毁—nunityengine.objec及其子类

数字人轻松学习Blender系列之八:建模-5_digitalman数字人c4d-程序员宅基地

文章浏览阅读870次。https://www.jianshu.com/p/991e308affd8 【前言】这一篇简单谈谈如何创建点、线、面,尤其是面的一些命令。【学习】一、创建边面工具快捷键 :F1、如果选择两个点将创建一条边。在正视图建立一个平面,按TAB键进入编辑模式,按A 取消对平面选择。按CTRL+鼠标左键点击创建一个点,按A 取消;再如此操作,创建三个点。选择..._digitalman数字人c4d

java栈和队列验证回文串_数据结构作业之栈和队列实现字符串回文数判断-程序员宅基地

文章浏览阅读949次。字符串回文的判断是比较常见的问题,有各种方法来判断回文串。在数据结构中,利用栈和队列的特性也可以来实现回文判断。我们将字符串压入栈,然后在弹出,将弹出的元素压入队列,并出队进行判断。大概的思路就是这样,很久之前写的了,具体的实现思路都忘了,大概阐述下思路,在这里做个笔记,方便以后看看。下面我们来看看实现:#include #include #include #include "windows.h"..._java用队列和栈判断一个字符串是否是回文串

Error: Loading PostCSS Plugin failed: Cannot find module ‘postcss-import‘_cannot find module 'postcss-import-程序员宅基地

文章浏览阅读2w次,点赞3次,收藏16次。Vue cli-3使用css转换postcss插件报错Error: Loading PostCSS Plugin failed: Cannot find module ‘postcss-import’寻找错误解决问题1.安装npm install postcss-px-to-viewport --save-dev2.添加配置文件postcss-config.js运行报错报错提示:没有找到 postcss-import模块猜想:①使用postcss插件需要额外npm install pos_cannot find module 'postcss-import

MySQL基础教程---Chapter 12 熟练使用存储过程_熟练编写存储过程-程序员宅基地

文章浏览阅读171次。以下为个人作为初学者的自己看书总结,访客看到有不足或差错之处,欢迎交流指正。day9 2020/10/23目录12.1 使用存储过程12.1.1 创建存储过程12.1.2 修改分隔符的设置12.1.3 执行存储过程12.1.4 创建只显示大于等于指定值的记录的存储过程12.2 显示、删除12.3 存储函数12.3.1 创建存储函数12.3.2 显示、删除12.4 触发器12.4.1 创建12.4.2 确认、删除12.1 使用存储过程将多个 SQL 语句组合成在一起,只需要使用 “CALL XX” 就_熟练编写存储过程

3. LaTeX图片的排版、引用与格式_latex引用图片-程序员宅基地

文章浏览阅读5.9w次,点赞108次,收藏415次。3. LaTeX图片的排版、引用与格式1.LaTeX 图片排版方式  在 LaTex 排版的论文写作中,LaTex 的所有宏包文件都要写在 \documentclass 命令之后和 \begin{document} 之前。在本文中,图片排版时使用到的宏包文件有:% 引言区\documentclass[utf-8]{article}\usepackage{ctex} \usepackage{graphicx} %% 图片包\usepackage{subfig} %% 子图包_latex引用图片