Avatar billede kovalt Nybegynder
16. august 2003 - 10:14 Der er 9 kommentarer og
1 løsning

få id ud ved INSERT INTO

Hej alle sammen

  Jeg har et SQL-statement, som indsætter en række i en tabel, der har en nøgle, der er defineret som autonummerering. Jeg ville meget gerne, om det var muligt at det den id-værdi ud som er gældende for den række, der bliver sat ind.

Wie tut mas das?

/kovalt
Avatar billede erikjacobsen Ekspert
16. august 2003 - 10:15 #1
Umiddelbart efter laver du en

  "select last_insert_id() as newid"
Avatar billede erikjacobsen Ekspert
16. august 2003 - 10:16 #2
Hov, nej, det er jo kun hvis det er MySql. Er det en nyere access er det

  "select @@identity as newid"

Du må gerne skrive hvilken database det er.
Avatar billede kovalt Nybegynder
16. august 2003 - 10:16 #3
jeg prøver lige igen så folk, der kun læser dansk også forstår :-)

Hej alle sammen

  Jeg har et SQL-statement, som indsætter en række i en tabel, der har en nøgle, der er defineret som autonummerering. Jeg ville meget gerne, om det var muligt at få den id-værdi ud som er gældende for den række, der bliver sat ind.

Wie tut mas das?

/kovalt
Avatar billede keysersoze Ekspert
16. august 2003 - 10:23 #4
medmindre jeg heller ikke forstår dansk, så har erikjakobsen givet den rigtige løsning - skal du have værdiet ud på den netop indsatte post er det ovenstående du skal bruge...

link til nærmere forklaring;

http://activedeveloper.dk/aspdigital/2002040401.asp
Avatar billede eagleeye Praktikant
16. august 2003 - 10:25 #5
Den optimale løsning som erikjacobsen også skriver, brø virke med access:


Conn.Open "Provider=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("somedir\somedb.mdb")

SQL = "INSERT INTO someTable (fld1, fld2) VALUES(123,'xyz');"
conn.Execute SQL
Set RS = Conn.Execute( "SELECT @@IDENTITY" )
nytID = RS(0)

Response.write nytID
Avatar billede eagleeye Praktikant
16. august 2003 - 10:32 #6
Hvis det eks giver 0 ud som nytID så virker den metode ikke, og det er afhængigt af driveren om det virker eller ej med Access.
Så er alternativet dette, som så kun virker med Access:


RS.Open someTable, conn, adOpenKeySet, adLockOptimistic
RS.AddNew
RS("fld1") = 123
RS("fld2") = 'xyz'
...
RS.Update
nytID = RS("ID")


Du kan se meget mere her omkring hvordan man finder sidste ID, både gode og dårlige eksempler:
http://www.4guysfromrolla.com/webtech/100598-1.shtml
http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=79
Avatar billede kovalt Nybegynder
16. august 2003 - 10:49 #7
tak for svaret ErikJacobsen.... min kommentar på mit indlæg omkring det at forstå dansk var nu ikke møntet på dig... det var bare fordi jeg havde skrevet noget sludder i første omgang og ikkef ik læst dit svar inden jeg postede min kommentar....

Mange tak for hjælpen - det var lige det jeg ledte efter :-)
Avatar billede kovalt Nybegynder
16. august 2003 - 10:50 #8
Hvad nu i tilfælde at der i mellemtiden - altså mellem insert og select bliver lavet et andet insert af en anden bruger.... kommer det til at betyde noget eller kan den godt styre det?
Avatar billede erikjacobsen Ekspert
16. august 2003 - 11:14 #9
Det betyder ingenting. Du får det rigtige svar. Du må imidlertid selv ikke lave
noget imellem din INSERT og din @@IDENTITY.
Avatar billede kovalt Nybegynder
16. august 2003 - 11:16 #10
ok
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