webForumDet fria alternativet

Radera poster i relationstabell när huvudposten raderas?

Databaser & SQL

2 svar · 1 301 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#1

Hej!

Jag har fyra tabeller:
projects (p_id)
items (i_id, i_p_id)
tools (t_id)
tools_rel (tr_i_id, tr_t_id)

Poster i items knyts till projects via i_p_id och tools knyts till items via tools_rel.

När jag raderar en post i items eller i tools är det enkelt att även radera länkade poster i tools_rel eftersom bådas id finns där, men hur gör jag om jag vill radera relationsposterna när jag raderar ett projekt?

När man raderar ett projekt så ska länkade items också försvinna (enkelt) plus relationer (inte lika enkelt), men de enda lösningarna (som jag ser) på att radera från relationstabellen är att antigen lägga in projekt-id i relationstabellen (känns redundant) eller att köra en select och en loop på items i samband med raderingen (känns tungt och omständligt). Finns det något smartare sätt för det här?

Tack för tips!

Medlem sedan jan. 2008280 inlägg
#2

Detta ska du göra först, innan du tar bort data ur projects och items...

DELETE REL FROM TOOLS_REL REL
INNER JOIN ITEMS IT ON REL.tr_i_id=IT.i_id
INNER JOIN PROJECTS P ON IT.i_p_id=P.p_id
WHERE P.p_id=<ditt projektid>

Medlem sedan nov. 20016 480 inlägg
#3

Ah, man kan ju köra join i delete också. Tänkte inte på det. Tack!!

254 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)