Проблемма с триггером при каскдном удалении

sanich

Есть две таблички
CREATE TABLE question_variants(
 id_qsn_var int UNSIGNED auto_increment PRIMARY KEY,
 parent_id int UNSIGNED NULL,
 FOREIGN KEY (parent_id) REFERENCES question_variants(id_qsn_var) ON DELETE CASCADE ON UPDATE CASCADE
)TYPE=InnoDb;

CREATE TABLE qsn_data(
 id_qsn_var int UNSIGNED NOT NULL, 
 KEY (id_qsn_var)
)TYPE=MyISAM;
В первой табличке зависимости, parent_id зависит от id_qsn_var, при удалении ID_QSN_VAR каскадно удаляются все связанные с ней записи в этой же таблице через parent_idВот написал триггер, которой должен удалять записи в другой таблице qsn_data при удалении из question_variants
create trigger `testing`.`BeforeDeleteQsn` BEFORE DELETE on `testing`.`question_variants` 
for each row BEGIN
 delete from qsn_data where id_qsn_var=old.id_qsn_var;
END;
Проблема в том, что триггер отрабатывает(удаляет из qsn_data) только для записей (question_variants), которые являются родительскимит.е.
id_qsn_var parent_id
 <b>1</b> null
 <b>2</b> <b>1</b>
При удалении id_qsn_var=1 триггер отрабатывает, затем срабатывает каскадное удалении которое триггер не вызваетЧТО ДЕЛАТЬ?
4 ответа

sanich

а зачем триггер писать (есть подозрение, что записи, удаляемые по FK, его не дергают)создайте в таблице qsn_data такой же FK на question_variants.id_qsn_var


sanich

а зачем триггер писать (есть подозрение, что записи, удаляемые по FK, его не дергают)создайте в таблице qsn_data такой же FK на question_variants.id_qsn_var
допустим каскадное удаление между question_variants и qsn_data возможно организоватьНо есть триггерытипа
create trigger `testing`.`beforeDeleteSubj` BEFORE DELETE on `testing`.`list_subject` 
for each row BEGIN
 delete from link_job_qsn where tbl_num in (<b>1</b>,<b>5</b>) and item_id=old.id_subj;
END;
Которые должны отрабатывать после каскадного удаленияКак быть в таком случае?


sanich

а зачем триггер писать (есть подозрение, что записи, удаляемые по FK, его не дергают)
кстати, вот подтверждение
Note: Currently, triggers are not activated by cascaded foreign key actions. This limitation will be lifted as soon as possible.


sanich

Как быть в таком случае?
не использовать FK, удалять всё через триггеры или отдельными запросами