Многотабличный оператор delete(+)

Sherman

Mephi
Многотабличный оператор delete(+)

Господа, а как быть с таком случае:

есть n-таблиц.

table1
table2
table3

они связаны по id.

фишка в том, что где-то может не быть записей, например:

вариант 1.

в каждой таблице есть связанные записи.

вариант 2.

в таблице table3 записей, связанных с таблицами table1, table2 нет.

многотабличный delete не срабатывает, если нету хотя бы одной записи в любой таблице, связанной с другой. оно и понятно т.к. в условии where идет оператор and.

Но как быть если нужно удалять и данные из варианта 2?

Понимаю, что можно просто использовать FK, но у меня нету внешних ключей в классическом понимании, т.к. используется mysql 4.0.x и таблицы myisam.

Что можно предпринять?
 

Кром

Новичок
>многотабличный delete не срабатывает, если нету хотя бы одной записи в любой таблице, связанной с другой. оно и понятно т.к. в условии where идет оператор and.

А ты делай LEFT JOIN, тогда все будет ОК.
 

Sherman

Mephi
т.е. типа:

Код:
delete table1,table2,table3 from
table1 as t1 
left join table2 as t2
on t1.id = t2.parid
left join table3 as t3
on t2.id = t3.parid
where t1.id= id
[code]
 

Sherman

Mephi
Кстати, индексы ведь используются абсолютно также как и при SELECT?
 

Кром

Новичок
Насколько я понимаю, нет.
Индексы используются именно для выборки, тогда как при удалении и обновлении база из перестраивает.
 

predator

web designer
с эстетической точки зрения:

вместо этого
delete table1,table2,table3 from
можно
delete t1,t2,t3 from

правда только для mysql>=4.1
 
Сверху