Avatar billede jjdk Nybegynder
16. august 2006 - 16:13 Der er 7 kommentarer og
1 løsning

Mysql -tjek sidste ID nr.

Hej
Jeg har en tabel med en del poster. Auto_increment er sat på feltet ID.
Jeg efterlyser en funktion, hvor der tjekkes for højeste ID.nr. + at ID.nr. til den næste kommende post sættes til højeste + 1.
Grunden hertil, er at der engang imellem oprettes en del poster og som så slettes igen. Så bliver der større hul mellem ID-numrene.
Avatar billede woowii Nybegynder
16. august 2006 - 16:18 #1
En mulighed ville være simpelthen bare at finde det sidste id via en query ".. ORDER BY id desc LIMIT 1". Id'et til den nye post bliver så bare det id du henter ud plus 1.

Men hvorfor betyder det så meget hvad id en post har? :)
Avatar billede pidgeot Nybegynder
16. august 2006 - 16:20 #2
Den næste post bliver ALTID sat til højeste+1 når det er auto_increment, det er alt for besværligt og problematisk at fylde huller ud.

Hvis du skal hente den ud efter du indsætter en række, kan du bare kalde mysql_insert_id() eller lave en query "SELECT LAST_INSERT_ID()". Woowii's princip er ikke nogen god ide, da du får et problem hvis der bliver indsat to rækker på samme tid.
Avatar billede jjdk Nybegynder
16. august 2006 - 16:31 #3
ID anvendes til fakturanr. i et system som fortsat er under udvikling. Derfor sker der en hel del tests. Jeg kan eksempelvis "brænde" 15 fakturanr. af og skal til at dokumentere det hver gang. Når der er testet, slettes posterne igen, men når jeg opretter næste faktura, husker den åbenbart det sidste anvendte ID-nr, selvom det er slettet. Jeg fik engang noget kode, som jeg kunne skrive direkte i MySqlAdmin i et forespørgselsvindue. Her satte jeg blot det IDnr. der skal anvende næste gange. Men jeg kan ikke huske det, og jeg vil hellere lave det i noget kode, så det sker mere automatisk.
Avatar billede jjdk Nybegynder
16. august 2006 - 16:48 #4
Nu fandt jeg lige ud af, hvordan nummeret sættes, så den eksempelvis starter fra 2000:
ALTER TABLE tabelnavn AUTO_INCREMENT = 2000
Avatar billede leif Seniormester
16. august 2006 - 18:05 #5
Sorry, men min mening er at man kører ikke test i et system hvor tingene ikke uden videre kan slettes uden dokumentation.

Jeg har ALTID en Udviklingsdatabase hvor al udvikling og test sker i, dette for at sikre at data som ligger i "live" systemmer kan er korrekte data.
Avatar billede jjdk Nybegynder
16. august 2006 - 18:29 #6
Det gør jeg faktisk også, men er dog først begyndt på det for nylig.
Avatar billede jjdk Nybegynder
16. august 2006 - 22:17 #7
Er løst nu med lidt hjælp fra www.php.net og med inspiration fra pidgeot.
Vil pidgeot sende et svar.
Avatar billede pidgeot Nybegynder
16. august 2006 - 22:20 #8
Gerne :)
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

IT-JOB