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

时间:2019-01-21 05:47:36

标签: database foreign-keys relational-database

假设我有两个来自两个不同表的对象,分别称为StudentSchoolStudent表存储School表的外键,因此它是多对一关系。例如:

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

School Obj (pk = 24)

现在,如果删除主键为24的School对象会怎样?主键为251的Student对象是否在删除过程中也进行了更新,以使其属性school_pk设置为null

1 个答案:

答案 0 :(得分:3)

开箱即用,如果您的数据库在处理外键方面做得很好,那么删除学校的工作就会失败,因为仍有学生在引用它。

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