Параметры внешнего ключа при обновлении и удалении. Что делает каждое поле [Ограничить, Каскад, Установить нуль, никаких действий]?Параметры внешнего ключа Mysql для внешнего ключа [Ограничить, Каскад, Установить нуль, никаких действий], что они делают?
ответ
Если вы один на один:
Для обоих обновления и удаления:
если вы пытаетесь обновить/удалить родительскую строку:
Ограничить: Ничто буду не будет удалять, если есть ребенок ряд
Каскад: ребенок строка будет удалять/обновление слишком
Set Null: дочерний столбец будет установлен в нулевое значение, если вы удалите родительский
Нет действий: ребенок строка не будет заботой удаления/обновления
«Ограничить» и «никаких действий» одинаковы. Ограничение - это только ключевое слово mysql, а «no action» - это стандарт SQL. – ProfileTwist
@ProfileTwist Нет, я понимаю, что «ограничение» отменяет операцию обновления/удаления, если есть записи (сначала вы должны удалить дочерние строки), напротив «no action» позволит вам обновить/удалить запись, даже если являются дочерними строками – glautrou
@glautro Проверьте http://stackoverflow.com/questions/5809954/mysql-restrict-and-no-action. Возможно, некоторые двигатели работают так, как вы описываете, но в Innodb невозможно обновить/удалить родительскую строку и создать дочерние строки-сирота, если проверка внешнего ключа временно отключена. Это потрясающе для целостности данных (если это то, чего вы пытаетесь достичь с помощью FK) – ProfileTwist
таблицы, содержащей Внешний ключ называется ссылки или дочерней таблицы, и таблица, содержащая ключ кандидата называется ссылки или родительской таблицы.
Set NULL: Устанавливает значение столбца NULL при удалении строки родительской таблицы.
КАСКАД: CASCADE будет распространить изменения когда родитель изменения. При удалении строки, строки в стесненных таблицах, которые ссылаются на эту строку также будет удалено и т.д.
RESTRICT: RESTRICT причины вы не можете удалить данную родительской строки если ребенок ряд существует который ссылается на значение для этой родительской строки.
NO ACTION: NO ACTION и RESTRICT очень похожи друг на друга. когда в ссылочной таблице выполняется оператор UPDATE или DELETE, СУБД в конце выполнения оператора проверяет, что ни одна из ссылочных связей не является нарушена. в короткой дочерней строке нет проблем, если родительская строка удалить или обновление.
Перефразирование 'в короткой дочерней строке не касается, если родительская строка удаляет или обновляет', означает ли это, что в NO ACTION, если родитель удален , это не разрешено? В случае родительского обновления ребенок остается прежним? – Pathros
@pathros no dear, это означает, что никаких изменений не произойдет в дочерней таблице, будет выполняться только родительская таблица - либо это удаление, либо обновление - это означает, что только родитель будет удален (в случае удаления), и все дочерние элементы будут сохранены, поскольку они будет – ImranNaqvi
, и я знаю, что это заставляет нас спросить, почему это похоже «Ограничить», все еще ищет ответ - если кто-то получил логику, любезно разделите – ImranNaqvi
- 1. Ограничения внешнего ключа MySQL, каскад delete
- 2. mysql ошибка внешнего ключа
- 3. Ошибка внешнего ключа ключа - MySQL
- 4. внешнего ключа: противоречили внешнего ключа
- 5. MySQL внешнего ключа Ограничить терпит неудачу
- 6. Проблема внешнего ключа MySQL
- 7. Как ограничить ограничение внешнего ключа?
- 8. Настройка внешнего ключа MySQL
- 9. mySQL дубликат внешнего ключа
- 10. Каскад внешнего ключа SQL Server 2005
- 11. Mysql Создание внешнего ключа
- 12. Использование внешнего ключа Mysql
- 13. PHP Mysql внешнего ключа
- 14. Ограничение внешнего ключа MySQL
- 15. Игнорировать каскад при обновлении внешнего ключа?
- 16. mysql напротив внешнего ключа
- 17. Ограничения внешнего ключа mysql
- 18. Mysql: ошибка внешнего ключа
- 19. MySQL ограничение внешнего ключа
- 20. MySQL значения внешнего ключа
- 21. Нарушение внешнего ключа MySQL
- 22. MySql Deleteing внешнего ключа
- 23. MySQL внешнего ключа проблема
- 24. Вопрос внешнего ключа MySQL
- 25. MySQL внешнего ключа исчезает
- 26. Внедрение внешнего ключа MySQL
- 27. Размер первичного/внешнего ключа MySQL?
- 28. MySql - Невозможно установить ограничение внешнего ключа
- 29. MySQL внешнего ключа не работает
- 30. MySQL - Добавление внешнего ключа Ошибка
Если все остальное терпит неудачу, прочитайте руководство: http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html –