Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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.