Avatar billede superib Nybegynder
12. maj 2003 - 13:38 Der er 9 kommentarer og
2 løsninger

Query returnere værdien af et autoinc. felt??

Jeg sender et query til bruger tabelen i min db, hvor jeg opretter en ny bruger... Den bruger får så et brugernr. af db, når rækken indsættes (et autoinc. felt)... Men jeg skulle gerne have det bruger nr ud af db'en... Der er ingen af de andre felter der er entydige.. heller ikke sammensatte entydige...

Jeg kunne løse det i java, ved at hente det højeste brugernr og lægge én til... men det kunne jeg godt tænke at undgå...

/SuperIB
Avatar billede j_jorgensen Nybegynder
12. maj 2003 - 13:43 #1
Kan du ikke bare lave en select max(id) from <tabelnavn> ?
Avatar billede sito Nybegynder
12. maj 2003 - 13:43 #2
lige mit forslag...
Avatar billede Slettet bruger
12. maj 2003 - 13:44 #3
Hvis du bruger PHP kan du hente den med

$sqlid = mysql_insert_id();

Hvis du bare vil hente det med MySQL er det

"select LAST_INSERT_ID() as lastid"
Avatar billede j_jorgensen Nybegynder
12. maj 2003 - 13:46 #4
Men han bruger jo Java ;) tænkte ellers også på det i PHP.
Avatar billede fsconsult.dk Nybegynder
12. maj 2003 - 13:47 #5
"select max(id)" er ikke brugbart hvis der kan forekomme samtidige brugere på databasen, da man jo får det højeste ID og ikke nødvendigvis det man selv lige har indsat.

Benyt istedet "select LAST_INSERT_ID()" som el_barto foreslår.
Avatar billede j_jorgensen Nybegynder
12. maj 2003 - 13:49 #6
of course, sorry...my mistake. holder helt klart også på "select LAST_INSERT_ID()".
Avatar billede superib Nybegynder
12. maj 2003 - 13:55 #7
Jeg tror lige jeg skal have en nærmere forklaring... Hvad mener i med "select LAST_INSERT_ID()"?? Er det en PHP funktion eller noget SQL sjov???

Mit alternativ var ellers at lave en "SELECT MAX brugernr....", ligge 1 til, og skrive det til db'en sammen med resten...
Avatar billede fsconsult.dk Nybegynder
12. maj 2003 - 13:56 #8
I java har du faktisk muligheden for at caste dit ResultSet til MySQL's version af ResultSet som indeholder LAST_INSERT_ID.
Dette er dog ikke nogen køn løsning da man øger bindingen til MySQL, og løsningen virker iøvrigt ikke på prepared statements.

JDBC3 driverne er dog blevet udvidet med metodekald til autogenerede nøgler, men det er ikke lykkedes for mig at få det til at virke den vej endnu.
Avatar billede fsconsult.dk Nybegynder
12. maj 2003 - 13:58 #9
LAST_INSERT_ID er en MySQL SQL funktion.

hvis du kalder "SELECT LAST_INSERT_ID" umiddelbart efter dit INSERT, vil du få et ResultSet tilbage med en række og et felt, indeholdende værdien af den netop generede nøgle.
Avatar billede superib Nybegynder
14. maj 2003 - 10:15 #10
Jeg har fået lavet mig en nydelig lille "SELECT LAST_INSERT_ID" løsning... så kan dem der mener de fortjener nogle point, ikke lige lave et svar...
Avatar billede Slettet bruger
14. maj 2003 - 10:19 #11
et lille svar ;)
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