Удаление строк из разных таблиц одним запросом
Типичная задача при разработке web-приложений - удаление объекта и связанных с ним свойств, хранящихся в базе MySQL в разных таблицах. Чаще всего это делается несколькими последовательными запросами, типаCode: Убрать нумерацию
- DELETE FROM `item_table` WHERE `item_id`=5
- DELETE FROM `properties_table` WHERE `property_parent`=5
- DELETE FROM `sizes_table` WHERE `size_parent`=5
Все эти проблемы легко решаются, если запрос на удаление сформировать в следующем виде:
Code: Убрать нумерацию
- DELETE
- `item_table`, `properties_table`, `sizes_table`
- FROM
- `item_table`, `properties_table`, `sizes_table`
- WHERE `item_id`=5
- AND `property_parent`=`item_id`
- AND `size_parent`=`item_id`
Code: Убрать нумерацию
- DELETE
- `item_table`, `properties_table`, `sizes_table`
- FROM
- `item_table`
- LEFT JOIN
- `properties_table` ON (`property_parent`=`item_id`),
- `sizes_table` ON (`size_parent`=`item_id`)
- WHERE `item_id`=5
Просмотров: 747 | Комментариев: 2
Метки: MySQL
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(31.10.2021 в 20:49):
Транзакции, которые именно транзакции, есть только таблицах InnoDB. Тут же можно смешивать таблицы разных типов. Да и код с одним единственным запросом мне нравится больше.
morgot
(31.10.2021 в 20:19):
Решение интересно, но вроде в MySQL есть транзакции? Или в данном случаи они чем-то не подходят? Давно не работал с веб, не помню уже нюансы, или только InnoDB таблицы или как.
Добавить комментарий
Заполните форму для добавления комментария