关于这个主题的一个非常好的主题是找到

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之间的区别相关推荐

  1. MySQL中INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?

    创建MySQL表时,PRIMARY,UNIQUE,INDEX和FULLTEXT有什么区别? 我将如何使用它们? #1楼 我觉得这已经很好地涵盖了,也许除了以下几点: 如果选择性足够,简单的KEY / ...

  2. Java中的executeQuery_java execute,executeQuery和executeUpdate之间的区别

    java execute,executeQuery和executeUpdate之间的区别 关注:269  答案:4  信息版本:手机版 电脑版 解决时间 2021-01-25 18:31 提问者怪咖 ...

  3. r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    r中rep 在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repositor ...

  4. Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...

  5. jvm优化_Java中JVM,JIR,JRE和JDK之间的区别

    jvm优化 JRE,JVM和JDK是您经常与Java编程语言结合使用的三个术语,大多数人会混淆它们或认为它们都是相同的. 在本文中,您将了解什么是Java运行时(JRE),什么是Java虚拟机(JVM ...

  6. java中gt与gtgt与gtgtgt与lt之间的区别

    1. 今天在刷剑指,遇到一道题: **输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.** 看到一个使用逻辑移位的放大进行的操作,很受启发,顺便整理一下从未用到的符号含义. 2. 符号 ...

  7. mysql更新数据库中int 1_Mysql数据库int(1)和tinyint(1)的区别扩展阅读

    明天将来诰日看项目的数据库构造设计,收现一个奇异的地圆. `xxx_detail`  `delflag` int(1) NOT NULL DEFAULT "0" COMMENT & ...

  8. mysql mediumint int_mysql中tinyint、smallint、mediumint,int 和bigint 的区别

    1:字节的定义:字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间 2.在mysql中一个汉字占三个 ...

  9. mysql where is_MySQL中条件放在where后面与放在on后面的区别

    假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下: address表: test_on_p ...

最新文章

  1. 批量按照文件大小排序并修改文件名
  2. html制作选择题题库,HTML与网页制作测试题库
  3. PHP在Windows环境下获取GMT时间
  4. 时间序列研(part3)--单积性
  5. java 大数类_Java大数类介绍
  6. artDIalog 弹出层
  7. 数据结构与算法基础-数组
  8. MYSQL中group_concat有长度限制!默认1024(转载)
  9. kmeans聚类算法matlab_KMeans聚类算法详解
  10. gitblit git SERVER window 安装配置 hook post-receive 自动部署
  11. JSP指令、动作和对象
  12. 吉米多维奇数学分析习题集每日一题--泰勒公式习题1378
  13. 努比亚手机老是出现android,努比亚又一老机型迅速升级Android 5.0
  14. 【部署】蓝绿发布、滚动发布、灰度发布,有什么区别
  15. cmt obm odm 代工模式oem_工厂有OEM,ODM,OBM之分吧,分别是什么意思?
  16. Improved Robustness to Open Set Inputs viaTempered Mixup
  17. 前端CSS代码格式化、JavaScript代码格式化函数
  18. Incremental Learning of Object Detectors without Catastrophic Forgetting详解
  19. CSP 201712-2 游戏
  20. 项目源码+付费进群系统分享

热门文章

  1. 微服务项目之电商--19.ElasticSearch基本、高级查询和 过滤、结果过滤、 排序和聚合aggregations
  2. 在线报表设计实战系列 – ③制作交叉分析表
  3. Serial Port Debug on EBox4300
  4. MIT大牛推荐的基本数学书
  5. 我想做产品,滴滴优步怎么优化
  6. matlab adaboost工具箱,GML_AdaBoost_Matlab_Toolbox
  7. 从软件管理后台看其匠心所在
  8. 数据分析思维九段路线图
  9. CSS 关键字 inherit 和 unset
  10. php生成个性签名,怎么巧妙添加个性签名