webForumDet fria alternativet

Add.New eller Sql-direkt.

ASPur ASP

1 svar · 251 visningar · startad av Oputres

OputresMedlem sedan feb. 2004333 inlägg
#1

Om man använder Ado:s variant Add.New finns ju möjligheten att låsa databasen med AdLockOptimistic/Pessimistic medan man skriver till den. Men om man istället väljer att lägga in poster genom att executa en Sql-sats direkt, hur fungerar det då med låsningen?

Säg att en person vill uppdatera en post när en annan håller på (visst, millisekunder men ändå), vad händer då? Får denne snällt vänta till person nummer 1 är klar?

GuffaMedlem sedan juni 2004533 inlägg
#2

Det som kallas låsning i ADO är egentligen ingen låsning av datat, utan snarare hur recordsetet ska hantera att datat förändras. Att öppna en tabell förhindrar inte att den ändras av någon annan. För att göra en riktig låsning av datat så måste man använda transaktioner.

När du kör en sql-fråga så har den automatiskt en transaktion. Det innebär att datat faktiskt är låst medan uppdateringen sker, så ifall två försöker uppdatera samma post samtidigt så får den ena vänta tills den andra är klar.

255 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
130 ms — hämta forumlista (db)
122 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)