Удалить несколько таблиц без объединения - PullRequest
0 голосов
/ 27 октября 2011

У меня есть две таблицы T1 и T2.C1 является первичным ключом T1, C2 является внешним ключом T2, который ссылается на столбец C1 T1.Я хочу удалить строки T2, которые проверяют определенное условие.Можно использовать простое DELETE:

DELETE FROM T2 WHERE <condition>;

Но я также хочу удалить строки T1, которые связаны со строками, удаленными предыдущим оператором.Например, если строка R2 (из T2) была удалена предыдущим оператором, я также хочу удалить строку R1 (из T1) с первичным ключом, на который ссылается R2.Я знаю, что есть возможность использовать операторы DELETE с JOIN, но я использую базу данных HSQLDB в памяти, которая не поддерживает эту функцию.

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Если вы используете ON DELETE CASCADE, то вы всегда можете выполнить удаление следующим образом:

DELETE FROM T1 WHERE T1.C1 IN (SELECT T2.C2 FROM T2 WHERE <condition>)
1 голос
/ 27 октября 2011

Как правило, ситуация должна была быть наоборот: при удалении строки из T1 все строки из T2 с внешней ссылкой должны были быть удалены: ON DELETE CASCADE (установите это для внешней связи)

Для удаления из более чем одной таблицы Это должно работать ( MySQL Delete Syntax ): УДАЛИТЬ [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [. *] [, Tbl_name [. *]]... ИСПОЛЬЗУЯ table_references [WHERE where_condition]

...