Зміст курсу
Реляційні Бази Даних та Нормалізація
Реляційні Бази Даних та Нормалізація
Обмеження Зовнішніх Ключів. Опція ON DELETE
ON DELETE
У реляційних базах даних зовнішній ключ встановлює зв'язок між двома таблицями. Цей зв'язок є суворим і супроводжується певними правилами або обмеженнями, відомими як ON DELETE.
Опція ON DELETE (при видаленні) визначає дію, яка виконується, коли запис, пов'язаний зовнішнім ключем, видаляється з іншої таблиці.
Для ілюстрації розглянемо сценарій з первинним ключем і пов'язаним з ним зовнішнім ключем. Коли ви видаляєте запис, що містить первинний ключ, спрацьовує вказана дія ON DELETE для відповідного зовнішнього ключа.
Примітка.
Під час створення зовнішнього ключа за допомогою інтерфейсу Системи керування базами даних (СКБД) вам часто буде запропоновано вибрати опцію ON DELETE. Однак, якщо ви визначаєте зв'язок безпосередньо за допомогою SQL, вам доведеться вказати цей параметр вручну.
Для зовнішнього ключа потрібно вказати дію ON DELETE.
Ось основні дії ON DELETE, які ви можете встановити:
- CASCADE
- RESTRICT (або NO ACTION)
- SET NULL
- SET DEFAULT
CASCADE
Коли видаляється первинний елемент, всі пов'язані з ним записи (ті, що посилаються на нього через зовнішній ключ) також видаляються.
Наприклад, якщо у вас є таблиці під назвами Group та Student (де в таблиці Student є зовнішній ключ, що вказує на таблицю Group):
І якщо відношення зовнішнього ключа з student.group_id
до group.id
визначено з опцією ON DELETE CASCADE, тоді видалення групи призведе до видалення всіх студентів, асоційованих з цією групою.
RESTRICT та NO ACTION
Ви не можете видалити первинний запис, якщо в інших таблицях є пов'язані записи. Якщо ви спробуєте це зробити, дію буде заблоковано, щоб забезпечити цілісність бази даних.
SET NULL
Видалення основного запису змінить зовнішній ключ у залежних записах на NULL, замість того, щоб видаляти ці записи.
Примітка
Щоб використовувати дію ON DELETE SET NULL, стовпець зовнішнього ключа має дозволяти null-значення.
SET DEFAULT
Дія SET DEFAULT подібна до SET NULL. Видалення первинного запису змінює зовнішній ключ у пов'язаних записах на вказане вами значення за замовчуванням, а не на NULL.
Дякуємо за ваш відгук!