MySQL - удаление нескольких таблиц MyISAM (аналогично ON CASCADE DELETE) - PullRequest
0 голосов
/ 17 июня 2011

Я ищу удалить все записи, на которые ссылается запись, а также все дочерние элементы в разных таблицах. Если возможно, я бы хотел использовать оператор удаления из нескольких таблиц, а не триггеры.

Например

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.

1 Ответ

0 голосов
/ 17 июня 2011

Возможно, не лучшее решение, но оно работает:

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; -) ...

...