Как я могу добавить ограничение на DELETE в таблице?
Как я могу добавить ограничение на DELETE в таблице?
Ответ 1
Используйте 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`
Ответ 2
Если внешний ключ уже создан, есть трюк, который сработал у меня. Вы можете изменить дамп своей базы данных и импортировать его с изменениями.
Если вы используете оболочку Mysql и Linux, это будет следующим образом:
Сначала экспортируйте свою базу данных:
$ mysql -u <user> -p <namedatabase> > database.sql
Затем откройте файл database.sql и найдите таблицу, которую вы хотите изменить.
Добавьте ON DELETE CASCADE
в конец предложения внешнего ключа и сохраните его.
Во-вторых, импортируйте свою базу данных с изменениями:
$ mysql -u <user> -p <namedatabase> < database.sql
И у вас будет работать ON DELETE CASCADE.