КАСКАД: коли рядок видаляється з батьківської таблиці, усі пов’язані рядки в дочірніх таблицях також видаляються. ОБМЕЖЕННЯ: Коли рядок видаляється з батьківської таблиці, операція видалення припиняється, якщо в дочірніх таблицях є пов’язані рядки.
Параметри RESTRICT і CASCADE мають однаковий ефект незалежно від того, чи скасовано певний привілей, чи GRANT OPTION для певного привілею. У будь-якому випадку RESTRICT запобігає виконанню операції, якщо є залежні привілеї, а CASCADE спричиняє видалення залежних привілеїв.
ON DELETE CASCADE і ON UPDATE CASCADE автоматизувати підтримку посилальної цілісності, спрощуючи керування базами даних і запобігаючи втрати записів. Дуже важливо використовувати ці параметри з розумом, оскільки каскадні дії можуть призвести до ненавмисної втрати даних, особливо з ON DELETE CASCADE.
Перевага опції ON DELETE CASCADE полягає в тому, що це дозволяє вам зменшити кількість операторів SQL, необхідних для виконання дій видалення. Наприклад, у базі даних stores_demo таблиця stock містить стовпець stock_num як первинний ключ. Таблиця каталогу посилається на стовпець stock_num як на зовнішній ключ.
Як ви можете собі уявити, обидва вони запускаються, коли його видалено (ON DELETE). CASCADE означає, що він також видаляє все, що посилається на даний елемент. RESTRICT означає, що посилання на рядок унеможливлює видалення.
Речення ON DELETE говорить про це якщо певне значення ідентифікатора первинного ключа в таблиці CUSTOMERS буде видалено, цю дію слід запобігти (це частина «обмеження»), якщо в таблиці ORDERS є будь-який рядок із зовнішнім ключем, який відповідає значенню значення ID таблиці CUSTOMER.