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,3 が削除form_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 に答える