0

我正在寻找删除记录引用的所有条目,以及不同表中的所有子项。如果可能的话,我想使用多表删除语句而不是触发器。

例如

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

因此,鉴于上述类型的表结构,如果我从中删除第 2 行forms,将从中删除第 2,3form_options行以及第 1 行form_options_info

4

1 回答 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 ;-)...

于 2011-06-17T19:21:23.003 回答