Выбор ответа Junior Проектирование и нормализация обновлено

ON DELETE CASCADE

Вопрос

У orders.customer_id внешний ключ REFERENCES customers(id) ON DELETE CASCADE. Что произойдёт при удалении клиента?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Вместе с клиентом удалятся все его заказы. CASCADE распространяет удаление на дочерние строки.

Варианты ответа

  1. Вместе с клиентом удалятся все его заказыправильный ответ
  2. Удаление будет запрещено, пока есть заказы
  3. У заказов customer_id станет NULL
  4. Заказы останутся с прежним customer_id

Разбор

CASCADE распространяет удаление на дочерние строки. Запрет даёт RESTRICT или NO ACTION (поведение по умолчанию), обнуление даёт SET NULL. Оставить висячую ссылку внешний ключ не позволит никогда. На практике с деньгами CASCADE опасен: удаление клиента молча сносит историю заказов и платежей, часто вместо этого делают мягкое удаление.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.