2015-12-27 2 views
0

Я хотел бы знать, можно ли принудительно создать каскад при удалении в MySQL?принудительно удалить каскад без ограничений в MySQL

Я знаю, что для того, чтобы иметь возможность удалить все Чайлдс из родителей это должно EXISTS:

REFERENCES table (fk) ON DELETE CASCADE ON UPDATE CASCADE 

Но мои таблицы не имеют, поэтому, вернемся к моему вопросу, является есть способ заставить его?

+1

Вы можете добавить ограничение? Это делает жизнь намного проще при удалении первичных ключей верхнего уровня, так как база данных выполняет всю работу. В противном случае у вас должен быть сценарий, процедура и т. д., которая сначала удаляет всех детей, а затем создает резервную копию дерева. Возможно, это не сложно, но может быть утомительным. –

+1

Да, есть: добавить ограничение :) – Shadow

ответ

1

Один либо ставит его в первоначальном создании таблицы, или попыток установить его после факта с ALTER TABLE

тузды Руководством Страницы на ALTER TABLE Syntax

Если один хочет установить постфактум, то же самое правила применяются, как показано в приведенной выше ссылке. Если эти данные или ранее не существовали, чтобы принудительное выполнение завершилось с вызовом ALTER TABLE, попытка не сможет установить fk с каскадным удалением.

См. Эту страницу руководства и посмотрите на ADD CONSTRAINT и DROP CONSTRAINT. Нет никакого изменения существующего ограничения. Скорее, нужно отбросить его, а затем снова добавить.

альтер добавить пример»

ALTER TABLE lunches 
ADD CONSTRAINT `fk_lunches_users` 
FOREIGN KEY (`studentId`) 
REFERENCES `students` (`studentId`) 
ON DELETE CASCADE; 

Также представляет интерес foreign_key_checks, которые должны быть исследованы. То есть, один готов временно отключить их.

Смежные вопросы