Avatar billede dkklein Nybegynder
19. januar 2009 - 22:07 Der er 4 kommentarer og
1 løsning

Brug af last:_insert_id

Jeg har lavet en application som skal indsætte nye records i en tabel. Jeg har et ID felt med auto inc sat og har problemer med at finde den næste id i rækken.

Jeg har fået at vide jeg skal benytte LAST_INSERT_ID men når jeg tester denne direkte i MySQL returnerer den 0.

Hvordan gør jeg dette?

Min application benytter følgende komponenter:

TSQLConnection
TSQLDataSet
TDataSetProvider
TClientDataSet
TDataSource
Avatar billede arne_v Ekspert
19. januar 2009 - 22:27 #1
SELECT LAST_INSERT_ID()

vil returnere sidste auto increment genererede key på *samme* connection.
Avatar billede dkklein Nybegynder
19. januar 2009 - 22:28 #2
Ja men mit spørgsmål er hvordan jeg udfører den query?
Avatar billede arne_v Ekspert
19. januar 2009 - 23:38 #3
Nu er jeg ikke nogen ørn til Delphi og databaser men:
  http://www.borlandtalk.com/re-select-lastinsertid-returns-0-vt27263.html
ser relevant ud.
Avatar billede dkklein Nybegynder
20. januar 2009 - 16:49 #4
Det hjælper mig desværre ikke ret meget for jeg laver nemlig ikke nogen INSERT først. Jeg benytter DBNavigator og når jeg klikker på + så får jeg en ny tom record, hvis jeg udfylder alle felter pånær ID og udføer en ApplyUpdates så får jeg en fejl om at ID feltet er NULL.
Avatar billede dkklein Nybegynder
20. januar 2009 - 22:13 #5
Jeg har fået løst mit problem nu. Feltet id skulle sættes til ikke at være required på clientdataset således at insert ville blive udført og MySQL opdaterede så automatisk ID. Og det var ikke nødvendigt at anvende LAST_INSERT_ID
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
Kurser inden for grundlæggende programmering

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