Как я могу добавить ограничение ON DELETE на таблицу? - PullRequest
39 голосов
/ 14 января 2011

Как добавить ограничение ON DELETE на таблицу?

Ответы [ 2 ]

74 голосов
/ 14 января 2011

Используйте ALTER TABLE + ADD CONSTRAINT. Например. если вы хотите связать элементы таблиц и профили по member_id и каскадно удалять профили при каждом удалении элемента, вы можете написать что-то вроде этого:

ALTER TABLE profiles
   ADD CONSTRAINT `fk_test`
   FOREIGN KEY (`member_id` )
   REFERENCES `members` (`member_id` )
   ON DELETE CASCADE

Если вам нужно обновить это ограничение - вам придется удалить его, а затем создать заново, прямого способа изменить его нет.

ALTER TABLE profiles DROP FOREIGN KEY `fk_test`
0 голосов
/ 26 октября 2016

Если внешний ключ уже создан, у меня есть хитрость.Вы можете изменить дамп своей базы данных и снова импортировать его с изменениями.

Если вы используете оболочку Mysql и Linux, это будет выглядеть так:

Сначала экспортируйте базу данных:

$ mysql -u <user> -p <namedatabase> > database.sql

Затем откройте файл database.sql и найдите таблицу, которую хотите изменить.

Добавьте ON DELETE CASCADE в конце предложения внешнего ключа и сохраните его.

Во-вторых, импортируйте вашу базу данных с изменениями:

$ mysql -u <user> -p <namedatabase> < database.sql

И у вас будет работать ON DELETE CASCADE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...