webForumDet fria alternativet
Logga in / Bli medlem

@@IDENTITY vid olika conn-objekt

Databaser & SQL

11 svar · 230 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Trådstart#1

@@IDENTITY i Access är beroende av att man använder samma connection-objekt som vid uppdateringen, um?

Medlem sedan juni 200032 967 inlägg
#2

Jao.

Medlem sedan feb. 200112 078 inlägg
#3

Tackar. :)

Då har jag ett problem.

Medlem sedan juni 200032 967 inlägg
#4

Läckert.

På vilket sätt?

Medlem sedan feb. 200112 078 inlägg
#5

Jag använder två funktioner i applikationen, som jag alltid gör om jag inte bygger komponent:

  • getConn
  • execSQL

getConn instansieras på nytt varje gång jag kör något genom execSQL, vilket innebär att den även förstörs när execSQL är klar.

There is your problem. ;)

Medlem sedan juni 200032 967 inlägg
#6

Kan du se till att ha ett unikt id för varje session som gör insert, så lagra det i tabellen. Sedan kan du plocka fram med SELECT MAX det räknarvärde som är högst, där sessions-id är korrekt.

Mvh,

Medlem sedan feb. 200112 078 inlägg
#7

Jo, jag vet att man kan göra så, men jag vill vara 100% säker på att det inte blir inkonsistens (?) om någon mikklar i databasen på annat håll samtidigt.

Jag kör en 'SELECT TOP 1 .... ORDER BY id DESC' just nu.

Medlem sedan juni 200032 967 inlägg
#8

Kan du inte bara slänga med någon sorts sessionsid?

/me fails to see problem.

Medlem sedan feb. 200112 078 inlägg
#9

Jo, men id är givetvis en räknare.

Problemet är att (visserligen ganska liten) någon uppdaterar precis innan en annan användare har hunnit få tillbaks sitt id från databasen. Då får denna fel id, eftersom hans då ju inte är sist längre. Du måste ju känna igen det.

Vad menar du med att slänga med sessionsid? I tabellen då eller och jämföra med vid hämtningen av id:t?

Medlem sedan juni 200032 967 inlägg
#10

Det jag menar:

mittSessionsidEllerLiknande = Session.SessionID
ExecSQL ("Insert into tabell (bla, bla2, ControlID) values ('bla', 'bla', " & mittSessionsidEllerLiknande)
set rs = ExecSQL("Select top 1 id from tabell where ControlID = " & mittSessionsidEllerLiknande)
insertid = rs(0)

Missförstår vi varandra? Även om någon hinner med en insert emellan, så spelar inte det någon roll, eftersom de har olika kontrollsiffror.

Mvh,

Medlem sedan feb. 200112 078 inlägg
#11

Jo, jag fattade vad du menade. ;) Nu fattar jag mer.

Det är en lösning, faktiskt. Tackar. :D

Medlem sedan juni 200032 967 inlägg
#12

Sure thing.

Glad att du förstod min ful-pseudo. ;)

Mvh,

380 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
126 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)