Как поддерживаются внешние ключи при удалении связанного объекта? - PullRequest
0 голосов
/ 21 января 2019

Допустим, у меня есть два объекта из двух разных таблиц с именами Student и School. В таблице Student хранится внешний ключ для таблицы School, так что это отношение многие-к-одному. Например:

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

School Obj (pk = 24)

Что произойдет, если я удалю объект School с первичным ключом 24? Обновляется ли объект Student с первичным ключом 251 также во время удаления, так что его атрибут school_pk имеет значение null?

1 Ответ

0 голосов
/ 21 января 2019

Из коробки, если ваша база данных выполняет правильную работу с внешними ключами, удаление школы будет просто неудачным, поскольку все еще есть учащиеся, ссылающиеся на нее.

Если внешний ключ определен как on delete cascade, удаление школы также приведет к удалению всех учащихся, ссылающихся на него. Некоторые базы данных также поддерживают параметр on delete set null, который обновляет столбец school_pk всех ссылающихся учеников до null, когда школа, на которую они ссылаются, удаляется.

...