何时使用“ON UPDATE CASCADE”

我经常使用“ON DELETE CASCADE”,但我从不使用“ON UPDATE CASCADE”,因为我不太确定在什么情况下它会有用。

为了便于讨论,请看一些代码。CREATE TABLE parent (

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id));CREATE TABLE child (

id INT NOT NULL AUTO_INCREMENT, parent_id INT,

INDEX par_ind (parent_id),

FOREIGN KEY (parent_id)

REFERENCES parent(id)

ON DELETE CASCADE);

对于“ON DELETE CASCADE”,如果id删除了具有a的父级,parent_id = parent.id则将自动删除子级中的记录。这应该没问题。这意味着当id更新父级时,“ON UPDATE CASCADE”会做同样的事情吗?

如果(1)为真,则意味着如果parent.id不可更新(或永远不会更新),则不需要使用“ON UPDATE CASCADE”,就像它是AUTO_INCREMENT或者总是设置为TIMESTAMP。是对的吗?

如果(2)不成立,在其他什么情况下我们应该使用“ON UPDATE CASCADE”?

如果我(由于某种原因)更新了child.parent_id不存在的内容,它会被自动删除吗?

好吧,我知道,上面的一些问题可以通过程序测试来理解,但我也想知道这是否依赖于数据库供应商。

请说清楚。

mysql update cascade,何时使用“ON UPDATE CASCADE”相关推荐

  1. MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况

    MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况 在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句 ...

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

    DROP [TEMPORARY] TABLE [IF EXISTS]     tbl_name [, tbl_name] ...     [RESTRICT | CASCADE] <1> ...

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

    . cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式 在父表上update/delete记录时,将子表上匹配记录的 ...

  4. mysql 与 oracle 的连表update

    mysql: update 表A a,表B b set a.xx=b.xx where a.id=b.id; oracle update 表A set a.xx=(select b.xx from 表 ...

  5. mysql之DML(SELECT DELETE INSERT UPDATE)

    DML:数据操作语言     INSERT     DELETE     SELECT     UPDATE SELECT:     SELECT SELECT-LIST FROM TBNAME|TB ...

  6. MySQL 数据库常用命令—insert delete update select

    引言 MySQL 数据库和其它的数据库一样,也支持增(insert)删(delete)改(update)查(select)操作. insert 基本语法规则 insert into table_nam ...

  7. MySQL模拟:线上误update的恢复

    作为DBA,细心.沉稳是首要的基本素质.不过总有那么一会心烦意乱或者开发同学出现误操作之类的...这里模拟一个误update操作,然后恢复. 如果开发同学有误操作之后最好先别乱动生产环境,需要记录几个 ...

  8. mysql 触发器不能同时 insert or update or delete_运维日记|SQL server 那点事——DML触发器...

    11月19日,21点,小编正六指霸屏,决赛圈1V4,忽然,电话响了,这种感觉很熟悉,不错,上次差点推掉对面水晶的那一幕又上演了--作为一名美创的员工,客户才是第一位,我毫不犹豫的摁下了接听键. ​ X ...

  9. php mysql update语句_mysql SELECT FOR UPDATE 语句

    MySQL  使用SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE R ...

最新文章

  1. java filter 返回错误消息_java filter 导致错误310
  2. class std::vectorclass std::basic_stringchar,struct std::char_traitschar,class std::allocatorch
  3. linux 中卸载提示设备正忙怎么办?
  4. ansible service模块使用示例
  5. 1040 有几个PAT(PAT乙级 C++)
  6. 豆瓣再被约谈处罚150万!一年被罚20次,豆瓣到底怎么了?
  7. spring-boot启动失败 Unregistering JMX-exposed beans on shutdown
  8. java me教程_Java ME基础教程
  9. svn版本管理软件——创建svn私人仓库
  10. java field 字段类型_Java Field类
  11. jQuery控制网页字体大小
  12. php程序的运行方法
  13. 如何更改XP系统默认字体 讨论话题……
  14. Monocular Depth Estimation UsingLaplacian Pyramid-Based Depth Residuals翻译
  15. 研华IO控制卡硬件接线方式
  16. 滴滴程序员被亲戚鄙视:年薪八十万不如二本教书的……
  17. 太阳能电池板原理及工作原理
  18. 信贷违约风险预测(二)简单的数据探索
  19. UDK 学习点滴 (不断更新)
  20. linux tar包分隔 tar split

热门文章

  1. SQL SERVER 通过SQL得到一百年内每周的开始日期和结束日期
  2. Jenkins出现一个错误 无法连接到Jenkins如何解决
  3. 凡科前端笔试之打印题
  4. 大班计算机课程设计,关于大班语言活动的课程设计
  5. 阿里云Centos服务器搭建mysql8.0.25
  6. Python入门-文件操作
  7. 【数据结构】ArrayList的具体使用(杨辉三角、扑克牌游戏)
  8. category(类目)的用法,NSDate,NSTimeInterval类的使用
  9. CSS定位+装饰+伪类选择器拓展
  10. ionic android 闪退,ionic 程序部署到ios设备闪退或白屏的解法方案