mysql update cascade,何时使用“ON UPDATE CASCADE”

本文探讨了数据库中ONUPDATECASCADE的作用及应用场景,通过对比ONDELETECASCADE,解析其在父表更新时如何级联更新子表的相关记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

何时使用“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不存在的内容,它会被自动删除吗?

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

请说清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值