Мультитабличный delete(+)

Sherman

Mephi
Мультитабличный delete(+)

Mysql 4.0.x

Есть такая струкутра:

cats(cat_ID) - nested sets(категории, дерево).

items(itm_ID, cat_ID) - элементы

params(par_ID) - парамтеры

cats_params(cat_ID, par_ID) - парамтеры категории

items_params(itm_ID, par_ID). - параметры элементов

Задача. Сделать каскадное удаление данных(т.е. мультитабличный delete). Стираем сразу всю ветку категорий и все данные, которые связаны с этой категорией.

В чем сложность.

1. Категории представлены алгоритмом nested sets.
2. Есть условие:

Запись из таблицы params не должна стираться, если есть хотя бы одна запись в таблице cats_params, в которой поле cat_ID не входит в записи в таблице cats, которые следует удалить.


Возможно ли сделать сие одним запросом? У меня на данный момент так:

1. Получаем все cat_ID, котоыре предстоит удалить.

2. Каскадно удаляем записи из таблиц items, items_params, условие: where items.cat_ID in (список cat_ID, полученный в пред. запросе).

3. Удаляем всю ветку категорий(таблица cats).

4. Подчищаем параметры.
 

Sherman

Mephi
к сожалению пока наш хостинг не предоставляет такой возможности:(
 
Сверху