【发布时间】:2017-03-11 06:58:26
【问题描述】:
目前,我正在使用带有 MySQL 后端数据库的 Django。
让我们拥有以下数据库架构
class Parent(models.Model):
parent_id = models.BigAutoField(primary_key=True)
last_child = models.ForeignKey('Child', on_delete=models.PROTECT)
class Child(models.Model):
child_id = models.BigAutoField(primary_key=True)
parent = models.ForeignKey('Parent', on_delete=models.CASCADE)
每个父母可以有多个孩子,但每个孩子只能有一个父母。 last_child 字段指向父母最后一个孩子。我想通过这个模式表达的是
只要其父级还活着,最后一个子级就不能死(被删除)
当父母去世时,所有孩子都会死
但是,由于 PROTECT 与 CASCADE 之间存在冲突,我对数据库完整性有些担忧。
我的问题是,如果我删除Parent,MySQL 会首先尝试删除什么?它会先删除Parent,然后再尝试删除Child 行,还是反过来?
【问题讨论】: