Avatar billede tdh1309 Juniormester
31. juli 2006 - 20:51 Der er 9 kommentarer og
1 løsning

Læsning af ID på nyoprettet record

Hej

Jeg anvender ASP og MySql.
Jeg indsætter en række ved:
INSERT INTO `picturetypes` ( `pictypeid` , `pictypetxt` )
VALUES (
'', 'TEST'
);

pictypeid har autoinc.

Hvordan fanger jeg nemmest pictypeid?
- får jeg dette som et resultat efter at have kørt min query, eller skal jeg lave en select på højeste pictypeid?

Det sidste indeholder jo risikoen for at der indsættes to records lige efter hinanden.
Avatar billede pidgeot Nybegynder
31. juli 2006 - 20:56 #1
I MySQL kan du køre querien SELECT LAST_INSERT_ID() for at få det seneste ID indsat af den aktuelle forbindelse. For andre databaser (såsom MSSQL) er det dog anderledes, hvis du engang skal omskrive.
Avatar billede keysersoze Ekspert
31. juli 2006 - 20:56 #2
SELECT last_insert_id() AS id
Avatar billede hmortensen Nybegynder
31. juli 2006 - 20:57 #3
Og så bør du lave din sætning om til:
INSERT INTO `picturetypes` ( `pictypetxt` )
VALUES (
'TEST'
);

Ellers vil den fejl på tom værdi i mySQL 5.
Avatar billede thesurfer Nybegynder
31. juli 2006 - 21:00 #4
Er det mig der tager fejl, eller skal man ikke bare brug "IDENTITY"?:

SELECT @@IDENTITY FROM MyTable;

http://www.geekpedia.com/Question79_How-to-select-the-last-inserted-record-from-the-identity-column.html
Avatar billede hmortensen Nybegynder
31. juli 2006 - 21:01 #5
Jo i Access og MSSQL.
Avatar billede arne_v Ekspert
31. juli 2006 - 21:15 #6
og saa er det

SELECT @@IDENTITY

da det er per connection og ikke per tabel
Avatar billede tdh1309 Juniormester
31. juli 2006 - 21:25 #7
Mange tak for det hurtige svar, og alle kommentarerne...
Det var lige hvad der skulle til :-)
Og for en sikkerhedsskyld - denne løsning tager hensyn til hvis en anden bruger opretter en record?
Avatar billede pidgeot Nybegynder
31. juli 2006 - 21:27 #8
Ja - som sagt er den forbindelsesspecifik, så to der bruger siden samtidigt vil få forskellige resultater.

Den eneste måde det kunne gå galt var hvis vi var ude i noget persistent connection, men det er du nok ikke - og hvis du er, ville du vide det :)
Avatar billede arne_v Ekspert
31. juli 2006 - 21:36 #9
hvis samtidigheds problemer har interesse saa laes http://www.eksperten.dk/artikler/996
Avatar billede tdh1309 Juniormester
31. juli 2006 - 21:41 #10
Mange tak for linket til artiklen :-)
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