12. juni 2001 - 23:29Der er
10 kommentarer og 1 løsning
Udtræk af næste id fra colonne med autonummering...
Ved nogen hvordan man kan suge det næste id i en colonne med autonummering. Jeg skal bruge det i forbindelse med en insert-ting.
Har forsøgt at med:
SQL = \"SELECT id FROM medarbejder order by id DESC\" Dim nextId nextId = objRec(\"id\")+1
Men hvis der i mellemtiden er slettet nogle rækker i ens tabel får jeg ikke det næste id, men blot det højeste der er indsat i colonnen (+1). Jeg skal bruge det næste id Acces vil indsætte.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
henrik_ffc>> ved select max(id) vælger du KUN den højeste record og du kan derfor ikke forudsige hvad den næste i rækken vil være... dog kan man nok sige seslect top 2 id from medarbejder order by id desc, på den måde får du det højeste og næst højeste, nu burde det jo ikke være så svært at finde det næste id!
Cyberfessor>> Du taler nonsens. Hvis du trækker ALLE ID\'s ud og de fx er 1, 2, 3, 6, 8 hvad er så det næste?? Man kan GÆTTE på det er 9, men det er langt fra sikkert. Det kunne være 12 eller 15 istedet, hvis de mellemliggende tilfældigvis er blevet slettet. Derfor er \"select max(id)\" præcis ligeså god (eller dårlig) som \"select ALT\" MEN select max(id) er langt hurtigere, da der kun skal hentes et enkelt tal...
Men pointen er at ingen af metoderne kan garantere, hvad næste id er, før der er indsat i tabellen.
Et auto id vokser altid opad med 1 hver gang der indsættes en ny tupel. Når du har indsat id = 1, 2, 3, 4, 5
ID DATA 1 xxx 2 yyy 3 xxx 4 qqq 5 www
og derefter sletter 3, 4, 5
ID DATA 1 xxx 2 yyy
vil næste id alligevel være 6 selvom der kun eksisterer id=1 og 2
ID DATA 1 xxx 2 yyy 6 ccc
Det har derfor INGEN effekt at hente de sidste to (her id=1 og 2) for du kan ikke vide hvad næste id vil være.
Bemærk at spørgsmålet gik på *næste* id, ikke næststørste. Hvad skulle man også bruge det til???
Min forslag til løsning var at indsætte en tom linie, undersøge hvilket id linie fik, bruge dette id til hvad det nu skal bruges til og derefter ændre indholdet af linien med update Medarbejder set xxx=qqq, yyy=zzz where id=www
sorry, havde forstået det som næste id i den anden retning, men det er rigtigt... hvis det er en record som ikke findes (endnu) bliver det lidt svært!
Synes godt om
Ny brugerNybegynder
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.