Avatar billede andersjo Nybegynder
02. november 2006 - 13:36 Der er 11 kommentarer og
1 løsning

return inserted id

Hei.

Jeg har to tabeller, registrering og deltaker. En registrering kan ha flere deltakere. Derfor ønsker jeg å sette id'en til tilhørende registrering inn i tabellen deltaker.

Kan jeg, når jeg kjører INSERT på registrering, få tilbake id'en til den nye recorden i registrering?

Jeg tror jeg gjorde noe liknende vha stored procedures i MS SQL en gang tidligere. Men går det på noen måte i MySQL?


//andersjo
Avatar billede tjaz Nybegynder
02. november 2006 - 13:44 #1
Du kan finde det seneste indsatte id med SQL sætningen:

"SELECT @@IDENTITY as NewID"
Avatar billede andersjo Nybegynder
02. november 2006 - 13:47 #2
Men dette kan vel være fra hvilken som helst tabell?

SELECT @@IDENTITY as NewID FROM registrering gir nemlig feil...
Avatar billede hmortensen Nybegynder
02. november 2006 - 13:48 #3
I mySQL er det:
SELECT LAST_INSERT_ID()
Avatar billede hmortensen Nybegynder
02. november 2006 - 13:49 #4
Du kan kun få fat i netop indsatte id fra samme connection:
INSERT INTO tabel (f1, f2) VALUES ('1', '2');
SELECT LAST_INSERT_ID();
Avatar billede tjaz Nybegynder
02. november 2006 - 13:53 #5
benytter selv @@IDENTITY som også tager fra samme connection, men om den som hmortensen skriver også virker ved jeg ikke, men mon ikke den gør det (har ikke testet)
Avatar billede tjaz Nybegynder
02. november 2006 - 13:56 #6
her er den jeg bruger

"INSERT INTO members (MemberName) VALUES ('"& newMemberName &"');" &_
"SELECT @@IDENTITY AS NewID;"
Avatar billede coderdk Praktikant
02. november 2006 - 13:59 #7
tjaz, @@IDENTITY er T-SQL altså Microsoft SQL Server, dette spørgsmål er i MySQL ;) hmortensens svar er korrekt.
Avatar billede tjaz Nybegynder
02. november 2006 - 14:04 #8
coderdk -> :) ... har også lige kigget i MySQL manualen for at tjekke LAST_INSERT_ID(); da jeg ikke tidligere var stødt på den da kode jeg skrev har virket fint til mit brug, men giver dig ret i, at det ved MySQL skal være LAST_INSERT_ID();

- man skal lære noget nyt hver dag ;)
Avatar billede andersjo Nybegynder
03. november 2006 - 09:01 #9
Du får legge inn et svar hmortensen. Takk for hjelpen.
Avatar billede coderdk Praktikant
03. november 2006 - 09:03 #10
Andersjo, Hvis du brugte PHP kunne du bruge funktionen mysql_insert_id(); :)
Avatar billede andersjo Nybegynder
03. november 2006 - 09:32 #11
Ok, men i dette tilfellet skal det brukes i et python-script.
Avatar billede hmortensen Nybegynder
03. november 2006 - 11:49 #12
Det var så lidt.
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