Avatar billede ncp Nybegynder
10. april 2003 - 12:17 Der er 9 kommentarer og
1 løsning

Indsæt og find id...

Jeg bruger denne kode til at indsætte en række i min tabel:

sql = "INSERT INTO t_anmeldelser (`skribent`, `game`, `dato`) " & _
"VALUES (" & _
session("id") & ", " & gameid & ", '" & mydatetime(now,0) & "'" & _
");"

objConn.execute( sql )

I min tabel er der endvidere et felt ved navn id, som har "autonummerering"... Efter dette indsæt, har jeg brug for at vide hvilket id min række har fået tilddelt. Hvordan finder jeg det ?
Avatar billede erikjacobsen Ekspert
10. april 2003 - 12:20 #1
du laver en "select last_insert_id() as id" umiddelbart efter
Avatar billede sbjerre Nybegynder
10. april 2003 - 12:34 #2
Lav det i en Stored procedure med følgende format:

CREATE PROCEDURE [ProcedureName]
(
  @Value1 varchar(255),
  @ReturnID int output
)
AS

insert into table (column1) values (@Value1)
Select @ReturnID = @@Identity

RETURN
GO


Det er en måde hvorpå du kan sikre dig at der ikke sniger sig en anden proces ind imellem kodeafviklingen og skaber problemet (Lost Update), hvor en anden procedure når at tilføje en ny række til tabellen hvorved en "select last-insert_id()" derved vil fejle.

Skriv evt igen hvis du kommer på mere

/Søren
Avatar billede erikjacobsen Ekspert
10. april 2003 - 12:35 #3
select last_insert_id() ... er netop konstrueret til ikke at fejle.
Og så bruger han iøvrigt mysql - ikke mssql.
Avatar billede morw Nybegynder
10. april 2003 - 12:37 #4
select last-insert_id() vil aldrig fejle da den er isoleret på den tråd/proces som brugeren har connectet til.

Så længe du ikke lukker din forbindelse til mysql er der altså ingen problemer.
Avatar billede sbjerre Nybegynder
10. april 2003 - 12:49 #5
ok sorry - jeg læste det som mssql i farten
Avatar billede mufoxe Nybegynder
10. april 2003 - 13:10 #6
last_insert_id er PHP. Ovenstående kode ligner ASP i høj grad.
Avatar billede erikjacobsen Ekspert
10. april 2003 - 13:30 #7
last_insert_id() er MySql!
Avatar billede ncp Nybegynder
10. april 2003 - 13:37 #8
erikjacobsen ->
Takker, det virker jo fint, og jeg er mere rolig, nu når jeg ved ingen kan lave kuks i det, når blere brugere f.eks. prøver at oprette poster samtidigt...

Smid et svar...
Avatar billede erikjacobsen Ekspert
10. april 2003 - 13:39 #9
Tak - jeg samler ikke på point
Avatar billede ncp Nybegynder
02. januar 2004 - 16:40 #10
luk
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