MySQL: удаление РОДИТЕЛЕЙ при удалении ДОЧЕРНЕЙ строки

#mysql #cascade

#mysql #каскад

Вопрос:

Допустим, у меня есть родительская таблица: FAMILY_MEMBER , каждая из которых имеет unique ID идентификатор.

У меня также есть FAMILY таблица с mother_id , father_id и daughter_id , каждая из которых указывает на FAMILY_MEMBER строку.

Когда я удаляю FAMILY строку, я бы хотел, чтобы БД автоматически удаляла 3 FAMILY_MEMBER родительские строки. Похоже, это полная противоположность тому ON DELETE ON UPDATE , для чего предназначены предложения and .

Комментарии:

1. Вам может помочь триггер.

Ответ №1:

 create trigger t1
    after delete on FAMILY
        for each row
            BEGIN
            delete from family_member
                where id = old.mother_id;
            delete from family_member
                where id = old.fa=ther_id;
            delete from family_member
                where id = old.daughter_id;
            END
 

Или этот (вы можете использовать разделитель для имени триггера и таблицы):

 create trigger `t1`
    after delete on `FAMILY`
        for each row
            BEGIN
            delete from family_member
                where id = old.mother_id;
            delete from family_member
                where id = old.fa=ther_id;
            delete from family_member
                where id = old.daughter_id;
            END