2011-06-17 15 views
0

レコードによって参照されるすべてのエントリと、異なるテーブル内のすべての子を削除します。可能であれば、私はトリガーではなく、マルチテーブルのdeleteステートメントを使用したいと思います。私はformsから行2を削除した場合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から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テーブルにテーブルを変更; - )...

関連する問題