获取错误无法删除或更新父行:外键约束甚至失败,即使设置为ON DELETE NO ACTION ON UPDATE NO ACTION

时间:2016-03-02 17:06:42

标签: mysql

我已经检查了所有依赖于此错误的问题,但找不到我的答案

这是我的EER图EER Diagram 我在Sales中插入一行例如这样(SellerFId = 1,GoodFId = 1,CustomerFId = 1)所以我希望能够从他们自己的表中删除卖家或好或客户所以在销售中插入的行仍然保留我使用销售和其他表之间的外部约束

 ON DELETE NO ACTION ON UPDATE NO ACTION

但当我从他们自己的表中删除卖家或好人或客户时mysql不允许我并给我这个错误

  

无法删除或更新父行:外键约束失败(newmobarakkabulsales,CONSTRAINT fk_Sellers_has_Goods_has_Customers_Sellers1 FOREIGN KEY(SellerFId)参考staffsStaffId)在更新时不执行任何操作(

所以具体我的问题是,我真的需要在Sales和Other表之间设置外键约束(如果不是这样的话,那么“ON DELETE NO ACTION ON UPDATE NO ACTION”的查询是什么 )

1 个答案:

答案 0 :(得分:1)

在MySQL中,NO ACTION is an equivalent of RESTRICT

  

NO ACTION:标准SQL中的关键字。在MySQL中,相当于RESTRICT。如果引用的表中存在相关的外键值,则MySQL服务器拒绝父表的删除或更新操作。某些数据库系统具有延迟检查,NO ACTION是延迟检查。在MySQL中,立即检查外键约束,因此NO ACTION与RESTRICT相同。

以及

  

RESTRICT:拒绝父表的删除或更新操作。指定RESTRICT(或NO ACTION)与省略ON DELETE或ON UPDATE子句相同。

关于你的上一个问题,你是否真的需要这样的约束是根据你的应用程序的规格确定的。