1451数据库删除数据失败或者更新失败1451 - Cannot delete or update a parent row:foreigen key constraint fails

数据库删除数据失败或者更新失败

当想要删除数据库中的数据时,发生了不可删除或者不可编辑时
在这里插入图片描述

原因分析:

有外键限制删除或者修改:

尤其是在activit工作流引擎的表中当流程错误想删除时,发现做不到,然后从外键下手,发现不止一个外键,有很多外键约束。


解决方案:

删除或者屏蔽或者修改外键

在activit工作流引擎的表中流程错误后,之前的我因为在开发阶段,删除不了数据,所以我只好直接把表删除重新建表测试流程,但是随着要上线,这样的方法在上线不可取然后就又研究了一下,网上有很多命令设置各种外键失效之类的,测试过没起作用,然后就准备去表中直接把外键删除,删除是可行的(在本地库测试了),但是害怕出错,删除不保险,然后就看到了下图这两个字段,然后这里的值对应的是
RESTRICT 为阻止执行,拒绝父表的删除或更新操作。指定 RESTRIC(或NO ACTION)与省略ON DELETE Or ON UPDATE子句相同.
CASCADE 为级联执行,从父表中删除或更新该行,并自动删除或更新了表中的匹配行。支持 ON DELETE CASCADE 和 ON UPDATE CASCADE 在两个表之间,不要定义 ON UPDATE CASCADE 作用于父表或子表中同一列上的多个子句。
No ActionSQL 的标准关键字,等效于 RESTRICT
SET NULL 从父表中删除或更新该行,并将子表中的一个或务个外键列设置为NULL。支持 ON DELETE SET NULL 和 ON UPDATE SETNULL 。如果指定SET NULL操作,请确保未将子表中的列声明为NOT NULL。
在这里插入图片描述
然后将需要修改的表改为SET NULL 就可以执行删除和修改操作了,但是当处理完数据时,要记得切换回来,不然会出错的在使用表的过程中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值