Имеется три таблицы:
- gift_certificate (сущность);
- tag (сущность);
- gift_certificate_to_tag_relation (связующая таблица для связи многие-ко-многим).
Записи в связующей таблице
gift_certificate_to_tag_relation хранятся в виде:
Хочу составить MySQL запрос с помощью JOIN на удаление строки из таблицы
gift_certificate (сущность). Для того, чтобы удалить строку из данной таблицы, первым делом необходимо удалить строку из связующей таблицы
gift_certificate_to_tag_relation.
Вот, что я пробовал сделать:
- вариант 1:
DELETE r, gc
FROM gift_certificate_to_tag_relation AS r
LEFT JOIN gift_certificate gc on r.gift_certificate_id = gc.id
WHERE gc.id = 9;
- вариант 2:
DELETE gift_certificate, gcttr
FROM gift_certificate
JOIN gift_certificate_to_tag_relation AS gcttr ON gift_certificate.id = gcttr.gift_certificate_id
WHERE gift_certificate.id = 9;
- вариант 3:
DELETE FROM gift_certificate, gcttr
USING gift_certificate
INNER JOIN gift_certificate_to_tag_relation AS gcttr ON gift_certificate.id = gcttr.gift_certificate_id
WHERE gift_certificate.id = 9;
Но это приводит к ошибке:
[23000][1451] Cannot delete or update a parent row: a foreign key constraint fails (`gift_certificates_system`.`gift_certificate_to_tag_relation`, CONSTRAINT `gift_certificate_to_tag_relation_ibfk_1` FOREIGN KEY (`gift_certificate_id`) REFERENCES `gift_certificate` (`id`))