Syntax med @@identity?

Databaser & SQL

6 svar · 191 visningar · startad av CokeLight

Medlem sedan juni 2000504 inlägg
Trådstart#1

Hejsan allihopa,

Jag vill använda @@identity i en update sats.. kör Access2000. Har kollat arkiven o hittat flera exempel, men inte med syntax tyvärr, o jag får det inte funka med det som jag provat.. hur gör man...? :)

[kod]
mittID = cn.execute("SELECT @@IDENTITY")

sqlUpdate = "UPDATE minTabell SET sDocument = " & parseArr & " WHERE mittID = " & mittID
[kod]

Medlem sedan dec. 200012 464 inlägg
#2

set mittID = cn.execute("SELECT @@IDENTITY")

sqlUpdate = "UPDATE minTabell SET sDocument = " & parseArr & " WHERE mittID = " & mittID(0)

Execute returnerar ett recordset.

Medlem sedan juni 2000504 inlägg
#3

ach so.. ! :) va bra.. då vet jag vilken syntax som är rätt.. hmm.. fast jag provade den varianten också tidigare, och jag får 0 (noll).. ?? Så jag trodde att det kanske också var fel..

Jag vet inte om jag gjort fel innan.. jag har en INSERT, som exekveras (i en frame) och så kör jag den här UPDATE:n i annan frame (om det nu spelar någon roll). Båda framearna ligger under samma parent frame, och båda triggas med två olika submitts från en och samma submit knapp.. min fundering var om det blir noll i select @@identity eftersom de körs samtidigt...?

Men select @@identity borde väl ändå inte returnera noll i vilket fall som helst.. ? Den borde väl returnera det värde som lades in sist.. så hur kommer det sig att det blir noll...? :) Tack för ditt snabba svar LarsG.

Medlem sedan dec. 200012 464 inlägg
#4

Jo, den fungerar ju så att den returnerar det senaste värdet som genererades för en insert inom samma session mot databasen.

Så om du har två olika submit så blir det två olika uppkopplingar till databasen.

Du måste alltså ta reda på värdet @@identity innan du stänger den connection där du gjorde insert.

Medlem sedan juni 2000504 inlägg
#5

Jaha!! hehehe.. vilken tur att du finns.. för det där hade jag aldrig kommit på.. Men då så ska jag spara skräpet i en cookie då, och använda det i mitt where villkor..

* CokeLight vill gå hem och orkar inte tänka ut nåt annat :) * Eller finns det nån bra lösning...? Annars får jag tacka så mycket för hjälpen jag fått !!

Medlem sedan dec. 200012 464 inlägg
#6

Ja en cookie eller en sessionvariabel blir väl bra.

Medlem sedan juni 2000504 inlägg
#7

Yup, bra.. skönt att det här är löst.. :)(verkar vara bättre med session i det här fallet.. jag måste köra request.cokie("LastID")+1, för den verkar ligga ett steg bakom.. så då kan man ju lika gärna köra session o få det rätt på en gång.. )

Jag ville undvika session variabler eftersom jag läste att det tog prestanda, men jämfört med cookies kanske det inte är nån stor skillnad för att skapa cookies tar väl också prestanda, så det kanske går på ett ut..? (fast det har ju inget med SQL att göra) Okay, tack igen :)

253 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)