如何在删除父项时保留外键数据?

时间:2012-11-26 19:20:41

标签: mysql database

我正在创建一个包含以下内容的数据库:

  • Artist
  • CD表引用了艺术家。

我希望情况是,当从数据库中删除Artist时,他们所做的CD必须不会自动删除,但它仍然应该可以删除他们所做的Artist

我是一个新手MySQL编码器,我认为它与 ON DELETE CASCADE / RESTRICT / SET NULL 或类似的东西有关但不是100%肯定,我很确定它是 NOT ON DELETE CASCADE 虽然。

2 个答案:

答案 0 :(得分:2)

如果要保留CD记录,则在删除Artist之前,需要将其外键字段设置为父(Artist)为NULL(或其他Artist记录)。在MySQL中,您可以使用ON DELETE SET NULL自动将外键设置为NULL。

您应该考虑是否真的想要这样做 - 它会使您的数据处于一种奇怪的状态。为什么需要删除艺术家而不是相应的CD?

答案 1 :(得分:0)

您应首先删除对要删除的艺术家的所有引用,然后删除艺术家应该没有问题。如果仍有对此对象的引用,则无法删除对象。