30. marts 2006 - 09:29Der er
18 kommentarer og 1 løsning
forudsige id nummer
jeg får min db til automatisk at lave et unikt idnummer (med auto_increment) til hver række.
Men jeg vil gerne kunne forudsige hvad det næste id nummer bliver.
Der bliuver tit slettet i databsen så jeg kan ikke bare tage det sidste og så ligge en til... men er der ikke en måde hvorpå man kan få fat i det tal databasen bruger til at lave idnumrene med?
hvis der kan være flere samtidige brugere, vil et sådant gæt ikke være særlig nøjagtig. iøvrigt bør der ikke lægges nogen form for logik på hvad id-feltet indeholder ...
Du skal ikke - ja du *kan* ikke - gætte næste nummer. Sæt rækken ind, og aflæs med LAST_INSERT_ID() funktionen:
If INSERT inserts a row into a table that has an AUTO_INCREMENT column, you can find the value used for that column by using the SQL LAST_INSERT_ID() function.
Vi sætter 5 poster ind i tabellen, og de får id 1, 2, 3, 4, og 5, Så sletter vi nr 5. Nu indsætter vi en ny, og hvilken id får den? 6 er svaret. 5 kan aldrig bruges igen.
Jeg har fundet en løsning... men jeg har ombygget systemet så jeg udgår problemet... Men jeg er stadig meget intereseret i et svar så de 30 point går stadig til den ker kan komme med en solid løsning...
Det er ikke fordi, jeg vil have point, men den eneste løsning du kan bruge, er med LAST_INSERT_ID() - eller hvad det tilsvarende nu hedder i dit programmeringssprog (mysql_insert_id() i PHP fx)
leif > Du siger at den altid lægger 1 til det højeste nummer, men i mit eksempel er det højeste nummer 4. Alligevel vil det næste nummer ikke blive 5, men 6
Hvis to brugere samtidig laver forespørgslen på "næste ledige nummer", vil de begge få 6 (efter eksemplet), men når INSERT'en sker i databasen, vil højst en af dem få denne nøgle! Det er snarere noget i din programlogik der bør ændres, hvis du er afhængig af at gætte næste nummer ..
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.