Удаление одним запросом (без 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.
Спасибо, буду благодарен! Бонус в карму обеспечен!:)


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