Avatar billede sth Novice
03. august 2004 - 20:39 Der er 10 kommentarer og
1 løsning

hvordan får jeg fat i LAST_INSERT_ID()

jeg har en sql der opretter nogle data:

SQLstmt = "INSERT INTO rapport_submenu (rapport_navn,rapport_beskrivelse,rapport_kategoriid,rapport_url,rapport_mgf_navn,rapport_varenummer,rapport_dato,rapport_summeret)"
SQLstmt = SQLstmt & " VALUES ('" & request.form("rapport_navn") & "','" & request.form("rapport_beskrivelse") & "'," & rapport_kategoriid & ",'" & rapport_url & "','" & request.form("rapport_mgf_navn") & "'," & CheckboxToDB(request.form("rapport_varenummer"))&"," & CheckboxToDB(request.form("rapport_dato"))&"," & CheckboxToDB(request.form("rapport_summeret"))&")"
Conn.Execute (sqlstmt)

Nu vil jeg så gerne vide hvad der blev skrevet i feltet "rapport_id" der er af typen "autolncrement"

jeg mener at have fundet ud af at jeg skal bruge LAST_INSERT_ID() men hvordan ?
Avatar billede Slettet bruger
03. august 2004 - 21:04 #1
Hvis du bruger PHP kan du udskrive den med mysql_insert_id()
Avatar billede arne_v Ekspert
03. august 2004 - 21:05 #2
Du laver bare en:

SELECT LAST_INSERT_ID()
Avatar billede arne_v Ekspert
03. august 2004 - 21:06 #3
Ganske almindelig query som returnerer en række og en kolonne.
Avatar billede sth Novice
03. august 2004 - 22:18 #4
hvis jeg skriver SELECT LAST_INSERT_ID() hvordan ved den så hvilken tabel det er  ? og at det ikke er en anden der har oprettet den sidste ?
Avatar billede arne_v Ekspert
03. august 2004 - 22:21 #5
LAST_INSERT_ID() er uafhængig af tabel men afhængig af connection.

D.v.s. at den returnerer den sidste auto genererede værdi i denne
connection uanset tabel.

Så hvis du laver query på din connection lige efter at have lavet insert
på din connection, så er der ingen muligheder for fejl.
Avatar billede sth Novice
04. august 2004 - 15:30 #6
jeg bruge ASP

jeg kan først teste iaften, så:

hvis jeg laver det sådan:
SQLstmt = "INSERT INTO rapport_submenu (rapport_navn,rapport_beskrivelse,rapport_kategoriid,rapport_url,rapport_mgf_navn,rapport_varenummer,rapport_dato,rapport_summeret)"
SQLstmt = SQLstmt & " VALUES ('" & request.form("rapport_navn") & "','" & request.form("rapport_beskrivelse") & "'," & rapport_kategoriid & ",'" & rapport_url & "','" & request.form("rapport_mgf_navn") & "'," & CheckboxToDB(request.form("rapport_varenummer"))&"," & CheckboxToDB(request.form("rapport_dato"))&"," & CheckboxToDB(request.form("rapport_summeret"))&")"
Conn.Execute (sqlstmt)



jeg kan først teste iaften, så:

hvis jeg laver det sådan:
SQLstmt = "INSERT INTO rapport_submenu (rapport_navn,rapport_beskrivelse,rapport_kategoriid,rapport_url,rapport_mgf_navn,rapport_varenummer,rapport_dato,rapport_summeret)"
SQLstmt = SQLstmt & " VALUES ('" & request.form("rapport_navn") & "','" & request.form("rapport_beskrivelse") & "'," & rapport_kategoriid & ",'" & rapport_url & "','" & request.form("rapport_mgf_navn") & "'," & CheckboxToDB(request.form("rapport_varenummer"))&"," & CheckboxToDB(request.form("rapport_dato"))&"," & CheckboxToDB(request.form("rapport_summeret"))&")"
Conn.Execute (sqlstmt)



SQLstmt2 = "SELECT LAST_INSERT_ID()"
Conn.Execute (SQLstmt2)
Set rs1 = conn.Execute(SQLstmt2)

conn.Close
Set conn = nothing
Set SQLstmt = nothing


hvad skal jeg så skrive for at få vist  LAST_INSERT_ID() ?


Response.Write      = rs1("LAST_INSERT_ID()") eller hvad ?
Avatar billede arne_v Ekspert
04. august 2004 - 15:33 #7
Nu er jeg ikke skrap til ASP.

Kan du ikke bruge rs1(1) altså bede om første kolonne ?

Hvis ikke så bruger du bare:


SQLstmt2 = "SELECT LAST_INSERT_ID() AS N"
Conn.Execute (SQLstmt2)
Set rs1 = conn.Execute(SQLstmt2)
Response.Write rs1("N")
Avatar billede sth Novice
04. august 2004 - 15:36 #8
UPS ! det fik jeg da nuk lige skrevet 2 gange !! prøver lige igen

jeg kan først teste iaften, så:

hvis jeg laver det sådan:
SQLstmt = "INSERT INTO rapport_submenu (rapport_navn,rapport_beskrivelse,rapport_kategoriid,rapport_url,rapport_mgf_navn,rapport_varenummer,rapport_dato,rapport_summeret)"
SQLstmt = SQLstmt & " VALUES ('" & request.form("rapport_navn") & "','" & request.form("rapport_beskrivelse") & "'," & rapport_kategoriid & ",'" & rapport_url & "','" & request.form("rapport_mgf_navn") & "'," & CheckboxToDB(request.form("rapport_varenummer"))&"," & CheckboxToDB(request.form("rapport_dato"))&"," & CheckboxToDB(request.form("rapport_summeret"))&")"
Conn.Execute (sqlstmt)



SQLstmt2 = "SELECT LAST_INSERT_ID()"
Conn.Execute (SQLstmt2)
Set rs1 = conn.Execute(SQLstmt2)

conn.Close
Set conn = nothing
Set SQLstmt = nothing


hvad skal jeg så skrive for at få vist  LAST_INSERT_ID() ?


Response.Write      = rs1("LAST_INSERT_ID()") eller hvad ?
Avatar billede sth Novice
04. august 2004 - 15:37 #9
Det tror jeg er rigitg, du høre fra mig  :)
Avatar billede sth Novice
04. august 2004 - 20:53 #10
Det var bare helt rigtig tak for det

Smider du lige et svar ?
Avatar billede arne_v Ekspert
04. august 2004 - 21:20 #11
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