Как удалить значения из трёх связанных таблиц одновременно?
Суть проблемы: Есть 3 таблицы в MySQL связанные между собой ключами. По непонятной причине в заглавной таблице (Indicator) появились дублирующие записи, которые не нужны, но удалить их не получается, потому что к ним привязаны записи в monitoring_result, а к тем записи из monitoring_results_methods.
Возможно ли каким-то образом удалить все записи monitoring_results_methods связанные с monitoring_result (и сами записи в monitoring_result), которые связанны с записью в Indicator в одном запросе? Сделать это руками физически невозможно - записей огромное количество.
Содержание таблиц:
indicator:
- id
- parent_id
- title
- code
- report_form_id
- index_number
- type
monitoring_result:
- id
- indicator_id (indicator.id)
- method_id
- report_id
- report_template_id
- total_value
- custom_method
- is_visible
monitoring_result_method:
- result_id (monitoring_result.id)
- method_id
Ответы (1 шт):
START TRANSACTION;
DELETE FROM monitoring_results_methods m
WHERE result_id in (
SELECT id FROM monitoring_result
WHERE indicator_id = 5000
);
DELETE FROM monitoring_result
WHERE indicator_id = 5000;
DELETE
FROM indicator
WHERE indicator.id = 5000;
COMMIT;
Проблема решена с помощью транзакции с тремя запросами.