当我们删除其他表中的外键主键时,会先删除它吗?第一个表中的主键或另一个表中的外键?我在面试中被问到这个问题。请提供一些理由回答:)
答案 0 :(得分:4)
通常,您需要在删除主键之前删除外键引用。否则,外键约束将无效。
我猜可能这是面试官正在寻找的答案。
但实际上,答案是“同时”。实现此目的的常规方法是使用级联删除外键引用。删除都将在同一个事务中发生(至少在大多数数据库中),因此它们在提交之前不会生效。
如果您是手动执行此操作,通常会执行以下操作:
NULL
)。答案 1 :(得分:1)
答案 2 :(得分:0)
在FK记录消失之前,无法删除PK记录。这是具有这种关系的定义的一部分,也是建立FK关系的主要原因之一。原因是您不希望孤立的子记录不再具有父级,因此没有意义。这是数据完整性问题。
如果您尝试在不先删除子记录的情况下删除PK,数据库将会出错。级联删除可以通过在后台首先删除它们来隐藏它,但这在很多时候都是非常糟糕的事情,应该避免。您不希望willy nilly删除子记录,有很多时候,子记录的存在告诉您不应删除父记录。