Mysql 获取错误无法删除或更新父行:即使设置为“删除”“无操作”“更新”“无操作”,外键约束也会失败

Mysql 获取错误无法删除或更新父行:即使设置为“删除”“无操作”“更新”“无操作”,外键约束也会失败,mysql,Mysql,我已经检查了所有与此错误相关的问题,但找不到我的答案 这是我的EER图 例如,我在Sales中插入一行(SellerFId=1,GoodFId=1,CustomerFId=1),因此我希望能够从他们自己的表中删除Seller或Good或Customer,以便在Sales中插入的行仍然保留,我在Sales和其他表之间使用了这个外部约束 ON DELETE NO ACTION ON UPDATE NO ACTION 但是当我从他们自己的表中删除Seller、Good或Customer时,mysq

我已经检查了所有与此错误相关的问题,但找不到我的答案

这是我的EER图 例如,我在Sales中插入一行(SellerFId=1,GoodFId=1,CustomerFId=1),因此我希望能够从他们自己的表中删除Seller或Good或Customer,以便在Sales中插入的行仍然保留,我在Sales和其他表之间使用了这个外部约束

 ON DELETE NO ACTION ON UPDATE NO ACTION
但是当我从他们自己的表中删除Seller、Good或Customer时,mysql不允许我这样做,并给我这个错误

无法删除或更新父行:外键约束失败(
newmobarakkabul
sales
,约束
fk\u Sellers\u has\u Goods\u has\u Customers\u Sellers1
外键(
SellerFId
)引用
员工
StaffId
)删除不操作更新不操作)

因此,我的问题是,我是否真的需要在Sales表和其他表之间设置外键约束(如果不是这样,那么“ON DELETE NO ACTION ON ON UPDATE NO ACTION”的查询是什么 )在MySQL中

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

而且

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


至于你的最后一个问题,你是否真的需要这样的约束取决于你的应用程序的规格。

所以在这个图中,如果我删除外键约束,这真的很重要吗(我的意思是我会面临任何问题)我的要求是,如果我从父表中删除“Sales”中的记录,则将其保留在“Sales”中。如果删除约束,则数据库将不再强制执行数据完整性。。更重要的是,我不能说,因为我并不真正了解你的应用程序。正如我发布的图表图片所示,
销售
表包含的记录(来自员工表的卖家从
商品
表向来自
客户
表的客户销售商品),因此如果来自(员工、客户、商品)的任何行被删除他们的记录应该保存到销售表查看EER图表并不意味着我知道你的应用。。。无论如何,删除这些表之间的约束意味着数据库将不再执行级联删除,或者在您的情况下,删除阻塞;它只允许您删除该行,并根据需要在Sales表中保留“孤立”行。非常感谢@MatteoTassinari