Что произойдёт, если администратор попытается выполнить SQL-запрос DELETE FROM Users WHERE user_id = 5, при условии что у пользователя с ID=5 есть задачи в таблице Tasks? Рассмотрите классическую реляционную БД (PostgreSQL/MySQL).

приведёт к следующему поведению в зависимости от настроек внешнего ключа:

Короткий ответ

Что ответить на собеседовании

Если в классической реляционной базе данных (PostgreSQL или MySQL) таблица Tasks содержит внешние ключи, ссылающиеся на таблицу Users, и для пользователя с userid = 5 существуют связанные записи в Tasks, то попытка выполнить запрос:

Подробный разбор

Ответ с пояснениями

Условие

Что произойдёт, если администратор попытается выполнить SQL-запрос DELETE FROM Users WHERE user_id = 5, при условии что у пользователя с ID=5 есть задачи в таблице Tasks? Рассмотрите классическую реляционную БД (PostgreSQL/MySQL).

Ответ

Если в классической реляционной базе данных (PostgreSQL или MySQL) таблица Tasks содержит внешние ключи, ссылающиеся на таблицу Users, и для пользователя с user_id = 5 существуют связанные записи в Tasks, то попытка выполнить запрос:

DELETE FROM Users WHERE user_id = 5;

приведёт к следующему поведению в зависимости от настроек внешнего ключа:

  • Если внешний ключ настроен с ограничением ON DELETE RESTRICT (по умолчанию) — удаление будет запрещено, и база выдаст ошибку, так как существуют связанные записи.
  • Если внешний ключ настроен с ON DELETE CASCADE — удалятся все связанные задачи из Tasks, а затем удалится пользователь.
  • Если внешний ключ настроен с ON DELETE SET NULL — в связанных записях Tasks поле user_id будет установлено в NULL.

Если внешние ключи не настроены, то удаление пользователя произойдёт, но записи в Tasks останутся, что приведёт к "висячим" ссылкам (нарушению целостности данных).

Таким образом, поведение зависит от ограничений целостности данных, заданных в схеме базы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее