Avatar billede jacksleo Nybegynder
21. juni 2004 - 11:57 Der er 5 kommentarer og
1 løsning

INSERT INTO database - med laveste mulige id

Har en mysql database med

id, tekst1, tekst2, tekst3
Der er auto_increment og unik på id

Når der så bliver indsat et nyt post så får den det nr som auto_increment er nået til.

Men der bliver også slettet enkelte post ind midt imellem og vil gerne have at id på nye posts får den laveste ledige id nr.

Så at hvis post med id 14 bliver slettet så får den næste nye post id 14

Bruger i dag:
mysql_query("INSERT INTO database (tekst1, tekst2, tekst3) VALUES ('$tekst1', '$tekst2', '$tekst3')");
Avatar billede Syska Mester
21. juni 2004 - 12:26 #1
Mener der er en mysql commando til at rette hvad den er kommet til, men hvorfor starte forfra??

Hvorfor er det så lige du vil holde styr på hvad for en nyhed der er nyest hvis du starter forfra med ID hvis du sletter gamle???
Avatar billede jacksleo Nybegynder
21. juni 2004 - 12:34 #2
det er ikke til et nyhedssystem men management af et flash site hvor der ikke skal være id numre som der mangles og hvor der ikke bruges sortering
Avatar billede muddi Praktikant
21. juni 2004 - 13:06 #3
Hvorfor er det at der ikke må mangle nogen id'er? For mig at se lyder det som lidt overkill at skulle finde et ledigt ID.
Er du sikker på at det ikke virker ligeså godt, hvis du bare fortsætter derudaf?

Anyway, hvis du absolut vil have det, så kan du muligvis bruge

ALTER TABLE tbl_name AUTO_INCREMENT = 1

Jeg mener at MySQL så selv vælger det førstkommende ledige ID (men det er ikke testet, og jeg kan ikke huske om jeg husker rigtigt! Så prøv det IKKE på live data!!!)

/Morten
Avatar billede jacksleo Nybegynder
21. juni 2004 - 15:13 #4
efter at have kigget meget på din løsning og testet på et test setup og så læst i mysql manualen, så har man vist nok til dels spærret for det du skriver.
Man kan godt fx slette de sidste 5 posts og så sætte auto_increment til det højeste nr id + 1 men man kan ikke sætte den til 1 og så få den til at fylde hullerne ud
Avatar billede sone Nybegynder
23. juni 2004 - 17:01 #5
Der er ikke nogen færdig løsning på dit problem... eneste løsning (som jeg ser det) er at du sløjfer din auto_increment og:
- laver ekstra SQL for hver insert som finder næste ledigt nr. (SELECT MAX(id) from table - og bruger max_id+1 som nyt id)
- Hver gang en række slettes, så flytter du sidste række ned på den plads (SELECT MAX(id) from table - og bruger dette id til: UPDATE table SET id=delete_id WHERE id=max_id)
Avatar billede jacksleo Nybegynder
12. juli 2004 - 16:48 #6
øv øv.. kan ikke gøres nemt
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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