我希望删除记录引用的所有条目,以及不同表中的所有子项。如果可能的话,我想使用多表删除语句而不是触发器。
例如
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
所以给定上述类型的表结构,如果我从forms
中删除第2行,它将删除form_options
中的第2,3行以及form_options_info
中的第1行。
答案 0 :(得分: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; - )......