mysql update cascade_mysql中On Delete Cascade和On Update Cascade之间的区别
关于这个主题的一个非常好的主题是找到
here和
here.当然,MySQL的权威指南是文档,可以在
here找到.
在SQL 2003标准中,有5种不同的引用操作:
> CASCADE
>限制
>没有行动
> SET NULL
> SET DEFAULT
回答这个问题:
> CASCADE
> ON DELETE CASCADE表示如果删除父记录,则还会删除所有子记录.在我看来,这不是一个好主意.您应该跟踪数据库中的所有数据,尽管这可以使用TRIGGER来完成. (但请参阅下面的评论中的警告).
> ON UPDATE CASCADE表示如果更改了父主键,子值也将更改以反映该值.在我看来,这不是一个好主意.如果您正在更改PRIMARY KEYs(甚至根本没有!),那么您的设计就会出现问题.再次,请参阅评论.
> ON UPDATE CASCADE ON DELETE CASCADE意味着如果您更新或删除父级,则更改将级联到子级.这相当于对前两个语句的结果进行AND运算.
>限制
> RESTRICT意味着任何删除和/或更新父项的尝试都将导致失败.如果未明确指定参照操作,则这是默认行为.
For an ON DELETE or ON UPDATE that is not specified, the default action is always RESTRICT`.
>没有行动
> NO ACTION:来自manual.标准SQL中的关键字.在MySQL中,相当于RESTRICT.如果引用的表中存在相关的外键值,则MySQL服务器拒绝父表的删除或更新操作.某些数据库系统具有延迟检查,NO ACTION是延迟检查.在MySQL中,立即检查外键约束,因此NO ACTION与RESTRICT相同.
> SET NULL
> SET NULL – 再次从手册中.从父表中删除或更新行,并将子表中的外键列设置为NULL.这不是最好的想法恕我直言,主要是因为没有办法“时间旅行” – 即回顾子表并将记录与NULL关联到相关的父记录 – CASCADE或使用TRIGGERs填充记录表到跟踪更改(但请参阅注释).
> SET DEFAULT
> SET DEFAULT. MySQL标准的另一个(可能非常有用)部分是MySQL没有打算实现的!允许开发人员指定在UPDATE或DELETE上设置外键列的值. InnoDB和NDB将使用SET DEFAULT子句拒绝表定义.
如上所述,您应该花一些时间查看文档,here.
mysql update cascade_mysql中On Delete Cascade和On Update Cascade之间的区别相关推荐
- MySQL中INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?
创建MySQL表时,PRIMARY,UNIQUE,INDEX和FULLTEXT有什么区别? 我将如何使用它们? #1楼 我觉得这已经很好地涵盖了,也许除了以下几点: 如果选择性足够,简单的KEY / ...
- Java中的executeQuery_java execute,executeQuery和executeUpdate之间的区别
java execute,executeQuery和executeUpdate之间的区别 关注:269 答案:4 信息版本:手机版 电脑版 解决时间 2021-01-25 18:31 提问者怪咖 ...
- r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
r中rep 在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repositor ...
- Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...
- jvm优化_Java中JVM,JIR,JRE和JDK之间的区别
jvm优化 JRE,JVM和JDK是您经常与Java编程语言结合使用的三个术语,大多数人会混淆它们或认为它们都是相同的. 在本文中,您将了解什么是Java运行时(JRE),什么是Java虚拟机(JVM ...
- java中gt与gtgt与gtgtgt与lt之间的区别
1. 今天在刷剑指,遇到一道题: **输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.** 看到一个使用逻辑移位的放大进行的操作,很受启发,顺便整理一下从未用到的符号含义. 2. 符号 ...
- mysql更新数据库中int 1_Mysql数据库int(1)和tinyint(1)的区别扩展阅读
明天将来诰日看项目的数据库构造设计,收现一个奇异的地圆. `xxx_detail` `delflag` int(1) NOT NULL DEFAULT "0" COMMENT & ...
- mysql mediumint int_mysql中tinyint、smallint、mediumint,int 和bigint 的区别
1:字节的定义:字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间 2.在mysql中一个汉字占三个 ...
- mysql where is_MySQL中条件放在where后面与放在on后面的区别
假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下: address表: test_on_p ...
最新文章
- 批量按照文件大小排序并修改文件名
- html制作选择题题库,HTML与网页制作测试题库
- PHP在Windows环境下获取GMT时间
- 时间序列研(part3)--单积性
- java 大数类_Java大数类介绍
- artDIalog 弹出层
- 数据结构与算法基础-数组
- MYSQL中group_concat有长度限制!默认1024(转载)
- kmeans聚类算法matlab_KMeans聚类算法详解
- gitblit git SERVER window 安装配置 hook post-receive 自动部署
- JSP指令、动作和对象
- 吉米多维奇数学分析习题集每日一题--泰勒公式习题1378
- 努比亚手机老是出现android,努比亚又一老机型迅速升级Android 5.0
- 【部署】蓝绿发布、滚动发布、灰度发布,有什么区别
- cmt obm odm 代工模式oem_工厂有OEM,ODM,OBM之分吧,分别是什么意思?
- Improved Robustness to Open Set Inputs viaTempered Mixup
- 前端CSS代码格式化、JavaScript代码格式化函数
- Incremental Learning of Object Detectors without Catastrophic Forgetting详解
- CSP 201712-2 游戏
- 项目源码+付费进群系统分享
热门文章
- 微服务项目之电商--19.ElasticSearch基本、高级查询和 过滤、结果过滤、 排序和聚合aggregations
- 在线报表设计实战系列 – ③制作交叉分析表
- Serial Port Debug on EBox4300
- MIT大牛推荐的基本数学书
- 我想做产品,滴滴优步怎么优化
- matlab adaboost工具箱,GML_AdaBoost_Matlab_Toolbox
- 从软件管理后台看其匠心所在
- 数据分析思维九段路线图
- CSS 关键字 inherit 和 unset
- php生成个性签名,怎么巧妙添加个性签名