аз имам 3 маси и аз не искам да определя някакъв чуждестранен ключ в таблиците ми. структурата ми на таблиците е както по-долу: таблица диаграма
Написах тази заявка:
delete relativedata, crawls, stored
from relativedata inner join
crawls
on relativedata.crawl_id = crawls.id and
relativedata.id = ? inner join
stored
on stored.crawl_id = crawls.id
тази заявка работи за мен, освен ако една от таблиците няма записи. сега как мога да направя това изтриване в 3 таблици в 1 заявка?
Отговори:
0 за отговор № 1Ако това се случи, ако всички таблици имат записи, опитайте да използвате LEFT JOIN instread на INNER JOIN. Също така, имахте някаква бъркотия с условията на Вашите връзки. Опитайте по следния начин:
delete
relativedata, crawls, stored
from
relativedata
LEFT join crawls on relativedata.crawl_id = crawls.id
LEFT join stored on relativedata.crawl_id = stored.crawl_id
WHERE
relativedata.id = ?
Също така, клавишите foregin са хубаво нещо и не се използватте обикновено са лоши идеи. Да, отначало изглеждат досадни, но се опитайте да се фокусирате върху това, КОИ те ви дразнят. Повечето пъти го правят, когато се намесвате с данни по начин, който не бива да се случва и без тях Вие ще причините инконтиненция на данните във Вашия ПБ.
Но това е само моето мнение.