-Martin- skrev:
> Nu får jeg fjernet alle de bruger_sessions som ikke er gyldige
> mere, dvs ældre en x antal dage
>
> Men nu vil jeg også gerne have slettet den dertil hørende
> indkøbskurv...
>
> Hvordan gør jeg så det ?
Den letteste måde er ved hjælp af en kaskadevis deletehandling
(referentiel integritet) - men det er jeg ikke sikker på at mySQL
understøtter. Men hvis det er understøttet så er ideen altså at du
definerer en relation mellem din brugertabel (primærtabellen) og
din indkøbskurvtabel (sekundærtabellen). Relationen betyder at du
ikke kan oprette en post i sekundærtabellen uden at der findes en
tilhørende post i primærtabellen (denne del af referentiel
integritet kan de fleste databaseprogrammer vist håndtere). Hvis
relationen så er defineret med kaskadehandlinger (ON DELETE
CASCADE, ON UPDATE CASCADE) vil en sletning af en post i
primærtabellen automatisk betyde at poster i sekundærtabellen også
slettes.
> Jeg finder alle de bruger_sessions som stadig virker og
> fjerner alle de indkøbskurve som IKKE har en reference ?
Uden cascade kan det gøres på to måder:
Enten ved at slette posterne i sekundærtabellen før de slettes fra
primærtabellen (så kan du benytte join til at slette dem, hvis du
da ikke ligefrem kender fremmednøglen [1]) - eller også kan du "rydde
op" ved at lave en forespørgsel der finder alle forældreløse poster i
indkøbskurvtabellen. Det sidste kan gøres med et left join med
kriteriet at nøglefeltet på højresiden skal være null.
Noter:
======
[1] Hvis du sletter data i brugertabellen ved hjælp af den nøgle der
også findes i indkøbskurvtabellen kan du bare køre to
sletteforespørgsler i stedet for en
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO -
www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.