Goedemorgen mensen!

Ik heb een vraag. Is het mogelijk om een veld genaamd 'user_id', uit meerdere tabellen te gelijk te verwijderen? Ik heb namelijk een database met modules en users. En als ik dan een users wil verwijderen, wil ik ook dat alle records met de user_id van de aangeklikte user uit de volledige database verwijderd word.

Alvast bedankt!

<?php
mysql_query("DELETE user_id, id FROM table1, tabel2");
?>


Code niet getest

Probeer het eens en kijk wat het geeft.
Oplossing: foreign key constraints!

Als jij op een juiste manier door middel van foreign keys de onderlinge relaties tussen je tabellen hebt aangebracht, hoef je hier nooit over na te denken. Afhankelijk van de instellingen worden records automatisch geupdate of verwijderd zodra het record waar ze afhankelijk van zijn verwijderd of gewijzigd wordt.
@Blanche

Dan moet je wel: "ON DELETE CASCADE" gebruiken toch?
dan nog kan je een acount beter op inactief zetten. Stel dat jij perongeluk een fout maakt met verwijderen, los dat dan maar eens op ;)
Dat is ook weer zo. Maar we hebben bijvoorbeeld wel een dagelijkse update. Dus het enige wat verloren zou gaan is de data van die dag.
@Terence

De rechten voor het wissen moeten natuurlijk ook beperkt zijn aan 1 of een paar mensen.

Ik ben ook voor het inactief zetten overigens, dat kan ja altijd weer ongedaan maken.
ik dat het ook inactief word. in ieder geval bedankt voor jullie tijd!
@Robert: jup, ON DELETE CASCADE is wat je dan zou moeten gebruiken. Maar zoals gezegd zal dit bijna nooit voorkomen, aangezien het niet nodig is om records te verwijderen.

Dat wil natuurlijk nog niet zeggen dat de foreign key constraints overbodig zijn, die zijn namelijk wel van het grooste belang. Zonder die constraints hangt je database namelijk als een los hoopje zand aan elkaar. De kans op corrupte data is levensgroot en dat is niet waar je op zit te wachten.
Inderdaad, ik gebruik het nu zelf ook (omdat m'n host nog geen pgSQL ondersteunt nog InnoDB) Maar dan moet je bijvoorbeeld ON UPDATE CASCADE gebruiken.
Dat hangt eigenlijk maar net van de onderlinge relatie af. Als jij wilt dat de foreign key meeverandert als het record waar naar gerefereerd wordt verandert, is dat de juiste instelling.

Maar ik kan me net zo goed een situatie voorstellen waarbij je niet wilt dat het mogelijk is om het bewuste record te updaten als er nog gekoppelde records in de database aanwezig zijn. In zo'n geval zou je dan dus voor ON UPDATE RESTRICT kiezen...

Reageren