Door met Foreign keys te werken. Daarvoor heb je of de InnoDB engine van MySQL nodig, of bv pgSQL gebruiken.
Een FOREIGN KEY zorgt ervoor, dat een subgroep alleen aangemaakt kan worden, als de opgegeven id voor de hoofdgroep ook echt bestaat. Ook kan je dan opgeven wat er moet gebeuren als dat id niet meer bestaat (dus wordt verwijdert).
Heb wat gegoogeld op die cascade delete maar snap er niets van, kan iemand mij wat verderhelpen ?
Geen innoDB? Dan zul je een andere database dan MySQL moeten kiezen. De enige engine van MySQL die met relationele databases overweg kan, is innoDB.
Kortom, wat jij wilt, kun je niet in MySQL met SQL oplossen, dat zul je met PHP moeten doen (extra queries en controles maken).
Maar wordt alsjeblieft wakker en ga eens een goede database uitzoeken, bv. het reeds genoemde PostgreSQL. Ben je van een hele hoop gedonder en onzekerheid af.
Het valt wel mee hoor. Je wilt een hoofdgroep verwijderen, dus ik neem aan dat je het id weet. Dan doe je gewoon eerst een DELETE query op je subgroepen met in de WHERE condition de hoofdgroep_id. Daarna verwijder je de hoofdgroep.
Ik snap dat de puristen dit niks vinden, maar dat het onmogelijk zou zijn klopt niet.
Jan, ik zei ook niet dat het onmogelijk is, maar dat je het met PHP moet oplossen.
Dus 2 queries versturen en checken of deze zijn gelukt. Mocht echter de 2e query mislukken, dan ben je de klos, er blijven restanten in de database achter die daar helemaal niet horen te staan. Die kunnen uiteindelijk ook weer voor problemen zorgen, afhankelijk van waar deze voor dienen. Je zult dit met de hand moeten verwijderen.
Gebruik gewoon innoDB of een betere database met FK's, dan bestaat dit hele probleem niet.
Zal zeker InnoDb bestuderen eens ik de tijd daavoor vind.
Ik ben met aanpassingen bezig op een live server dus ik kon moeilijk zomaar gaan overschakelen op een ander DB systeem met het risoco dat alles platvalt ... plus dat het nog php4 is enz ...
In de realiteit is het meestal zo dat als een syteem werkt laat het dan zo, niet upgraden, geen zware aanpassingen .... (zelf denk ik daar ook wel anders over maja, de ervaring spreekt dit tegen)