Встречается на собеседованиях • сегодня

Какие знаешь особенности удаления данных, связанных через Foreign Key

При удалении данных с Foreign Key важно учитывать ограничения целостности. Основные варианты поведения:

  1. RESTRICT (по умолчанию) – запрещает удаление, если есть связанные записи.
    sql
    ALTER TABLE child_table ADD CONSTRAINT fk_name 
    FOREIGN KEY (parent_id) REFERENCES parent_table(id) ON DELETE RESTRICT;
  1. CASCADE – автоматически удаляет связанные записи.

    sql
    ON DELETE CASCADE
  2. SET NULL – устанавливает NULL в FK-поле связанных записей (требует nullable-колонки).

    sql
    ON DELETE SET NULL
  3. NO ACTION – аналогично RESTRICT, но проверка выполняется позже в транзакции.

В JPA/Hibernate можно настроить через аннотации:

java
@OneToMany(cascade = CascadeType.REMOVE) // для CASCADE
@ManyToOne(optional = true) // для SET NULL

Важно: CASCADE может привести к неожиданному массовому удалению, а SET NULL требует корректной обработки NULL в логике приложения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы