2011-06-17 45 views
0

我正在寻找删除记录引用的所有条目以及不同表中的所有子条目。如果可能的话,我想使用多表删除语句而不是触发器。MySQL - MyISAM多表删除(类似于ON CASCADE DELETE)

例如

Table: forms 
id  var 
1  foo 
2  bar 

Table 2: form_options 
id  form_id  var 
1  1   blah 
2  2   hello 
3  2   world 

Table 3: form_options_info 
id  form_options_id  var 
1  3     world info 

所以给出了上述类型的表结构的,如果我从form_options_info删除forms行2,将来自form_options删除行2,3以及第1行。

回答

0

梅比不是最好的解决方案,但它的工作原理:

DELETE FROM form_options_info, form_options, forms 
    USING forms INNER JOIN form_options INNER JOIN form_options_info 
    WHERE (form_options_info.form_options_id = form_options.id 
    AND form_options.form_id = forms.id 
    OR form_options.form_id = forms.id) 
    AND forms.id = 2; 

...或只是改变表InnoDB的; - )...