删除相关对象时如何维护外键?
How are foreign keys maintained when a related object is deleted?
假设我有两个来自两个不同 table 的对象,分别称为 Student
和 School
。 Student
table为School
table存储了一个外键,所以是多对一的关系。例如:
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
。
假设我有两个来自两个不同 table 的对象,分别称为 Student
和 School
。 Student
table为School
table存储了一个外键,所以是多对一的关系。例如:
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
。