删除相关对象时如何维护外键?

How are foreign keys maintained when a related object is deleted?

假设我有两个来自两个不同 table 的对象,分别称为 StudentSchoolStudenttable为Schooltable存储了一个外键,所以是多对一的关系。例如:

Student Obj (pk = 251)
- school_pk = 24 (Attribute can be null)

School Obj (pk = 24)

现在,如果我删除主键为 24 的 School 对象会怎样?主键为251的Student对象在删除时是否也更新,使其school_pk的属性设置为null

开箱即用,如果您的数据库能够正确处理外键,则删除学校只会失败,因为仍有学生在引用它。

如果外键定义为on delete cascade,删除一个学校也会删除引用它的所有学生。一些数据库还支持 on delete set null 选项,当他们引用的学校被删除时,该选项会将所有引用学生的 school_pk 列更新为 null