webForumDet fria alternativet

Göra en metod mutual exclusive

ASP

4 svar · 288 visningar · startad av udden

Medlem sedan mars 200174 inlägg
Frågan#1

Har en metod (function som det heter i asp) enl typ:

Function GetUniqueNbr()
   strRes = ""

   'skapa db koppling här etc...

   rs = conn.execute("...sql sträng")
   strRes = rs("intUniqueNbr")

   strUpSql = "UPDATE tbl SET intUniqueNbr = " strRes+1
   conn.Execute strUpSql,,128

   GetUniqueNbr = strRes
End Function

Denna metod behöver jag alltså ha ett lås omkring. Efter jag hämtat ett nummer skall detta uppdateras med +1 INNAN nästa användare får hämta ett nummer.

Hur löses detta snyggt i asp? Sett några inlägg med Application.Lock / unlock som första/sista rad i metoden, men meningarna går isär om detta fungerar när man inte använder någon application-variabel.

Medlem sedan maj 200010 687 inlägg
#2

Kolla på BeginTrans och CommitTrans i ADO.
http://www.devguru.com/Technologies/ado/quickref/connection.html

Är inte helt säker på om det låser tabellen, men jag tror det.

Medlem sedan dec. 19991 072 inlägg
#3

Kör med en transaktion via ADO. Gör "Conn.BeginTrans" innan första anropet och sen "Conn.CommitTrans" efter uppdateringen.
Det borde funka.
Du måste dock instansiera Conn-objektet och öppna det först.

Edit: ...var snäppet för sen...! :)

Medlem sedan mars 200174 inlägg
#4

läser på och testar direkt.

tack båda för snabbt svar!

Medlem sedan juni 200032 967 inlägg
#5

Annars kan man ju i det här fallet använda @@identity, som ju är ganska sejf. :-)

Mvh

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)