Удаление из нескольких таблиц с внешними ограничениями

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

    A_has_B ---- B ---- C_has_B
(many to many)        (many to many)

Я пытаюсь удалить все строки из A_has_B, B и C_has_B с учетом идентификатора записи в B. Я использую MySQL с механизмом хранения innodb с внешними ключами, определенными для A_has_B и C_has_B, ссылаясь на ID в B.

Я пытаюсь выполнить свое удаление следующим образом:

DELETE A_has_B.*, C_has_B.*, B.*

FROM
A

join
B
on (B.B_id = A.B_id)

join
C
on (C.B_id = B.B_id)

where B.B_id IN(1,2, 4);

Проблема в том, что когда я выполняю запрос, mysql жалуется:

Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`db`.`C`, CONSTRAINT `fk_C` FOREIGN KEY (`B_id`) REFERENCES `B` (`B_id`) ON DELETE NO ACTION ON UPDATE NO)

Как я могу исправить это?

19
задан Brian Tompsett - 汤莱恩 10 August 2015 в 18:55
поделиться