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