Что такое поведение MySQL по умолчанию ON DELETE?

StackOverflow https://stackoverflow.com/questions/1027656

  •  06-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь проанализировать MySQL документы . Они могут быть понятнее. Кажется, они говорят, что есть пять возможностей: SET NULL, NO ACTION, RESTRICT, CASCADE и SET DEFAULT.

NO ACTION и RESTRICT делают одно и то же (предотвращают любые изменения БД, которые нарушают FK), и эта вещь используется по умолчанию, поэтому, если вы пропустите предложение ON DELETE, вы скажете NO ACTION (или RESTRICT - то же самое).

SET NULL разрешает удаление родительской строки, устанавливает FK в NULL.

CASCADE удаляет дочернюю строку.

SET DEFAULT никогда не следует использовать.

Это более или менее правильно?

Это было полезно?

Решение

Да, это правильно.

  

НЕТ ДЕЙСТВИЙ : [...] InnoDB   отклоняет операцию удаления или обновления   для родительской таблицы.

     

ОГРАНИЧЕНИЕ : отклоняет удаление или обновление   операция для родительской таблицы.   Указание ОГРАНИЧЕНИЯ (или НЕТ ДЕЙСТВИЯ)   то же самое, что опускание ON DELETE или   ОБНОВЛЕНИЕ [...]

Очевидно, NO ACTION и RESTRICT являются синонимами. Кроме того, поскольку они используются всякий раз, когда нет условия ON DELETE / UPDATE , это поведение по умолчанию.

  

SET NULL : удалите или обновите строку из родительской таблицы и установите   столбец внешнего ключа или столбцы в   дочерний стол к NULL. [...]

Внешний столбец имеет значение NULL, при условии, что он не объявлен как NOT NULL (или InnoDB не допустит удаления или обновления).

  

CASCADE : удалите или обновите строку из родительской таблицы и   автоматически удалять или обновлять   соответствующие строки в дочерней таблице.   [...]

Каскад удаляет (или обновляет) внешний столбец.

  

SET DEFAULT : это действие распознано   парсером, но InnoDB отклоняет   определения таблиц, содержащие ON DELETE   SET DEFAULT или ON UPDATE SET DEFAULT   статьи.

Таким образом, вы не можете использовать эту опцию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top