Как удалить из нескольких таблиц в MySQL?

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

DELETE FROM `pets` p,
            `pets_activities` pa
      WHERE p.`order` > :order
        AND p.`pet_id` = :pet_id
        AND pa.`id` = p.`pet_id`

Однако я получаю эту ошибку

Непойманный Database_Exception [1064]: у Вас есть ошибка в Вашем синтаксисе SQL; проверьте руководство, которое соответствует Вашей серверной версии MySQL для правильного синтаксиса для использования рядом 'p, pets_activities pa...

Я никогда не делал кросс-таблицы, удаляют прежде, таким образом, я неопытен и застреваюсь на данный момент!

Что я делаю неправильно?

109
задан Sam 18 August 2014 в 09:51
поделиться

3 ответа

Поскольку это, похоже, простая связь родитель / потомок между pets и pets_activities , вам лучше создать свой внешний ключ ограничение с каскадом удаления.

Таким образом, когда строка pets удаляется, связанные с ней строки pets_activities также удаляются автоматически.

Тогда ваш запрос станет простым:

delete from `pets`
    where `order` > :order
      and `pet_id` = :pet_id
19
ответ дан 24 November 2019 в 03:21
поделиться

Синтаксис мне кажется правильным ... попробуйте изменить его, чтобы использовать ВНУТРЕННЕЕ СОЕДИНЕНИЕ ...

Взгляните на это: http: //www.electrictoolbox. com / article / mysql / cross-table-delete /

2
ответ дан 24 November 2019 в 03:21
поделиться

В настоящий момент у меня нет базы данных mysql для тестирования, но пробовали ли вы указать, что нужно удалить, до предложения from? Например:

DELETE p, pa FROM `pets` p,
        `pets_activities` pa
  WHERE p.`order` > :order
    AND p.`pet_id` = :pet_id
    AND pa.`id` = p.`pet_id`

Я думаю, что используемый вами синтаксис ограничен более новыми версиями mysql.

2
ответ дан 24 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: