Удаление одним запросом (без CASCADE) из нескольких связанных таблиц
Всем здравия. Прошу помощи. Есть 2 связанные таблицы:
create table catalogs(
id serial primary key,
name varchar(100)
);
create table products(
id serial primary key,
name varchar(100),
catalog_id bigint unsigned,
price bigint unsigned,
FOREIGN KEY (catalog_id) REFERENCES catalogs(id)
);
insert into catalogs(name)
values ('Процессоры'), ('Материнские платы'), ('Оперативная память'), ('Видеокарты');
insert into products(name, catalog_id, price)
values ('Core i5', 1, 6990), ('Core i7', 1, 9790), ('Asus P800', 2, 5390), ('Kingston 8G3200', 3, 2990);
Необходимо удалить все продукты относящиеся к каталогу "Оперативная память", причём удалить вместе с каталогом. Есть запрос:
delete products, catalogs
from catalogs
join products
on catalogs.id = products.catalog_id
where catalogs.name = 'Оперативная память'
Он отработает корректно, если выставить CASCADE или вовсе удалить FOREIGN KEY.
А как его заставить отработать в текущих таблицах? Получается ему нужно сначала удалить все продукты, а потом родительский каталог. Так возможно в одном запросе?
Сейчас ошибка: SQL Error [1451] [23000]: Cannot delete or update a parent row: a foreign key constraint fails.
Спасибо, буду благодарен! Бонус в карму обеспечен!:)