Ограничения / каскады MySQL: будет ли это работать?
У меня есть таблица - темы - и другая - сообщения.
Каждая тема похожа на тему с ответами. Если тема удалена, все связанные сообщения должны быть удалены.
Все сообщения имеют идентификатор и поле thread_id. Вот что у меня есть, просто интересно, правильно ли это.
ALTER TABLE `posts`
ADD CONSTRAINT `FK_threads`
ADD FOREIGN KEY(`thread_id`)
REFERENCES `threads`(`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
Должно ли это быть наоборот, или все вместе совершенно неправильно?
1 ответ
Решение
Почти правильно. Вам не нужно ADD
до FOREIGN KEY
ALTER TABLE `posts`
ADD CONSTRAINT `FK_threads`
FOREIGN KEY(`thread_id`)
REFERENCES `threads`(`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
Вот SQLFiddle, который показывает DELETE CASCADE
а также UPDATE CASCADE
В бою