DELETE FROM *,*,*,* (каскадное удаление..)

WoLFiks

Не курю...
DELETE FROM *,*,*,* (каскадное удаление..)

Есть множество подчиненных главной таблиц. cabinet_list - "главная".
Все подчиненные связаны с главной по полям
id - to_cabinet_id

Как составить запрос DELETE для удаления всех записей из ВСЕХ подчиненных таблиц, где to_cabinet_id есть определенное значение.

Что-то вроде -
DELETE FROM
cabinet_get_client_money,
cabinet_use_client_money,
cabinet_user_cars,
cabinet_user_contracts,
cabinet_photos
USING cabinet_get_client_money,
cabinet_use_client_money,
cabinet_user_cars,
cabinet_user_contracts,
cabinet_photos,
cabinet_list
WHERE cabinet_get_client_money.to_cabinet_id=cabinet_list.id AND
cabinet_use_client_money.to_cabinet_id=cabinet_list.id AND
cabinet_user_cars.to_cabinet_id=cabinet_list.id AND
cabinet_user_contracts.to_cabinet_id=cabinet_list.id AND
cabinet_photos.to_cabinet_id=cabinet_list.id AND
cabinet_list.id=14;

Но это дело не работает...
Либо делать множеством запросов - для каждой таблицы свой??? Но так не красиво )...
 

WoLFiks

Не курю...
Судьба.
Для 2х таблиц легко.
Как сделать при их кол-ве 5,6,7....

-~{}~ 29.11.07 13:29:

Я так понимаю, что при данном условии WHERE если в одной тбл из списка будут отсутствовить записи с to_cabinet_id=cabinet_lisl.id, то ничего происходить не будет..

-~{}~ 30.11.07 10:04:

Т.е. проще делать в несколько запросов?
Так получается?
 

WoLFiks

Не курю...
Но придуман же многотабличный синтаксис DELETE, поэтому должно быть решение сделать удаление одним запросом, причем таблицы то все связаны 1 -> много, вот и хочется разобраться как???
 

berkut

Новичок
Я так понимаю, что при данном условии WHERE если в одной тбл из списка будут отсутствовить записи с to_cabinet_id=cabinet_lisl.id, то ничего происходить не будет..
сначала напиши селект, который выбирает все записи, которые ты хочешь удалить. а потом чуток подправь запрос, шоб сделать из него делит. есть такая штука left join
 

WoLFiks

Не курю...
Действительно каскадное конечно t1 (1) -> (много) t2 (1) -> (много) t3, а
данный случай пусть будет частным случаем каскадного...
 

Wicked

Новичок
WoLFiks
я не про это, а про то, что из основной таблицы то запись не удаляется
 

WoLFiks

Не курю...
Так вот и нужен запрос, чтобы удалялась и запись из основной и те записи, которые от нее зависят, в остальных таблицах.
 

Wicked

Новичок
тогда почему у тебя во FROM нету удаления из таблицы cabinet_list?
 

WoLFiks

Не курю...
Это уже нюансы... Т.е. естественно в окончательном варианте все добавится. Главное было написать условия выборки тех записей, который нужны для удаления.
Сейчас покручу JOIN, думаю с ним долен найтись нужный вариант.
 

Mols

Новичок
WoLFiks
Если удаляется запись из "главной" и как следствие все "подчинённые" то почему бы не поручить это все внешним ключам ?
 

Mols

Новичок
Ну да... или в крайнем случае тип таблицы изменить. Тоже может помочь... если конечно смена сервера и хостера не сработает ;)
 
Сверху