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.
4 svar · 288 visningar · startad av udden
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.
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.
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...! :)