Как удалить каскадно данные из таблицы

Пытаюсь удалить данные из одной таблицы, она связана с другой. String sql = "DELETE FROM transactions WHERE id = ? ; DELETE FROM transactions_to_categories WHERE transactions_id = ? "; Так не получается, а примера каскадного удаления не нашел.


Ответы (1 шт):

Автор решения: Daniil Loban

Для того чтобы работало каскадное удаление, используют модификацию таблицы

Например, для каскадного удаления записей в таблице some_table

ALTER TABLE some_table ADD FOREIGN KEY (some_fk)
REFERENCES another_table(some_id) ON DELETE CASCADE;

Мы указываем ее связь с another_table и что удалять записи нужно каскадно ON DELETE CASCADE, кстати помимо этого вполне уместно использовать и ключ ON UPDATE CASCADE для каскадного обновления записей.

Далее, при удалении записей в another_table они так же удалятся из some_table

DELETE FROM another_table WHERE some_field='value';
→ Ссылка