Разница между CASCADE и SET NULL при удалении внешнего ключа заключается в следующих действиях:
- CASCADE. 12 При удалении или обновлении записи в таблице-предке, которая содержит первичный ключ, автоматически удаляются или обновляются записи со ссылками на это значение в таблице-потомке. 2
- SET NULL. 2 При удалении или обновлении записи в таблице-предке, которая содержит первичный ключ, значения внешнего ключа в таблице-потомке устанавливаются в NULL. 2 Для этого необходимо, чтобы столбец внешнего ключа допускал значение NULL. 1
Таким образом, CASCADE позволяет при удалении строки из главной таблицы автоматически удалить все связанные строки из зависимой таблицы, а SET NULL устанавливает для столбца внешнего ключа значение NULL при удалении или обновлении связанной строки из главной таблицы. 1