Avatar billede panikspreder Nybegynder
13. oktober 2003 - 15:00 Der er 6 kommentarer og
1 løsning

Indeks, Unik og Primær?

Hejsa!

Jeg er igang med at fuske med noget MySQL og er stødt ind i et problem. Egentlig ikke et rigtigt stort problen, men mere en problemstilling.

Jeg har oprettet et table og indtastet en masse informationer. Det hele virker fint, men hvis jeg f.eks. sletter nr. 45 og opretter en ny bliver den kaldt 46! Hvordan får man databasen til at bruge de tomme pladser der kan komme når man sletter noget?!?

Håber der er en som kan hjælpe!

-PanikSpreder
Avatar billede arne_v Ekspert
13. oktober 2003 - 15:08 #1
ALTER TABLE tbl_name AUTO_INCREMENT = n

sætter værdien til n.
Avatar billede arne_v Ekspert
13. oktober 2003 - 15:10 #2
Men jeg vil da på det kraftigste frarråde dig at begynde at fifle med
det.

Et aito increment felt er bare unikt - ikke nødvendigvis fortløbende.
Avatar billede arne_v Ekspert
13. oktober 2003 - 15:11 #3
Hvis du kun sletter i toppen så kan det lige gå, men hvis du sletter
midt i og vil forsøge at "rykke" de højere numre ned skal du muligvis ud og
opdatere en masse fremmed nøgler - og det bliver hurtigt kaos.
Avatar billede panikspreder Nybegynder
13. oktober 2003 - 15:15 #4
Ideen er at jeg f.eks kan slette nr. 45 ud af 100 og næste gang jeg opretter data fylder den op i 45 og fortsætter med 101 derefter. Sådan at der ikke kommer huller i rækkefølgen...
Avatar billede arne_v Ekspert
13. oktober 2003 - 15:22 #5
Så tror jeg ikke at du skal bruge auto increment !

Så tror jeg at du skal bruge en free list og transaktioner.

(evt. kombineret med auto increment når der ikke er nogen på free list)
Avatar billede panikspreder Nybegynder
13. oktober 2003 - 15:25 #6
Hehe lyder meget smart, men hvordan gør man?

Jeg er næsten lige begyndt på MySQL!
(koder i PHP)
Avatar billede arne_v Ekspert
13. oktober 2003 - 15:53 #7
Det bedste er nok bare at leve med huller i rækkefølgen.

Justering af auto_increment har du fået SQL kommandoen til.

En free list betyder at når du sletter en record så ryger
id'en ned i en speciel tabel. Når der så skal tilføjes en ny
checker du først om der er nogle genbrugs id'er i free list,
hvis ja bruges den (og den slettes så fra free list), hvis nej
så sættes bare en ny største værdi.

Det vil kræve noget kode. Men jeg tror mere på den end på at fifle
op og ned med auto increment.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester