Ограничения / каскады 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 В бою

Другие вопросы по тегам