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.
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.
@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...