удалить 1 запись из таблицы и автоматически удалить все записи, связанные с user_id в MySQL - PullRequest
0 голосов
/ 08 сентября 2011

Я пытался учиться, читая учебники онлайн и прочее, но я просто не могу это понять.

На данный момент у меня есть 2 таблицы (у меня будет намного больше, когда я создаю свое приложение), поэтому я хочу устранить эту проблему перед расширением и кодированием.

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

Если я выполняю запрос DELETE в основной таблице пользователей, как я могу также удалить все записи из других таблиц, связанных с полем user_id?

Я знаю, это просто, но я думаю, что мне просто нужно задать вопрос самому, чтобы я мог понять ответ, а не читать ответ ... хе

Большое спасибо за любую помощь.

Ответы [ 3 ]

5 голосов
/ 08 сентября 2011

Поскольку они являются таблицами InnoDB с правильными отношениями FK, вы можете просто использовать ON DELETE CASCADE в определении внешнего ключа.Например, в одной из связанных таблиц:

FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE

Однако для изменения внешних ключей необходимо изменить существующую схему.

См. MySQL FOREIGN KEY документы для полной информации.

0 голосов
/ 08 сентября 2011

это пример mysql

 ALTER TABLE  table_with_foregin_key ADD FOREIGN KEY (  foreign_key_column )
 REFERENCES  table_name (
 user_id
 ) ON DELETE CASCADE ON UPDATE CASCADE;
0 голосов
/ 08 сентября 2011

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

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

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