/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
lægge 1 til...
Fra : Niels Andersen


Dato : 13-03-01 20:25

Kan man i MySQL bede om at forhøje et heltal med én?

Jeg spekulerer over et lille projekt, hvor der skal tælles en hel masse. Det
er noget til et web-site.

Normalt ville jeg hente den aktuelle værdi, lægge én til, og gemme den nye
værdi.
Men hvad nu hvis to gør det på samme tid? Så vil den ene jo gå tabt...
Hvis jeg i stedet fyrer en SQL-ting af der siger at noget skal forhøjes med
én, så kan der godt komme en mere millisekundet efter.

Hvordan plejer man at løse den slags?

Og hvad med andre SQL'er? PostGreSQL(?) og MSSQL fx...


Mvh.

Niels Andersen



 
 
Christian Schmidt (13-03-2001)
Kommentar
Fra : Christian Schmidt


Dato : 13-03-01 20:57

Niels Andersen wrote:
>
> Kan man i MySQL bede om at forhøje et heltal med én?
>
> Normalt ville jeg hente den aktuelle værdi, lægge én til, og gemme den nye
> værdi.
> Men hvad nu hvis to gør det på samme tid? Så vil den ene jo gå tabt...
> Hvis jeg i stedet fyrer en SQL-ting af der siger at noget skal forhøjes med
> én, så kan der godt komme en mere millisekundet efter.

Nu beskriver du ikke præcist, hvad du vil opnå, men flg. er i hvert fald
en mulighed:

UPDATE tabel SET antal = antal + 1 WHERE id = 12345

En sådan update foregår atomisk, dvs. at hvis du fyrer udtrykket af x
gange, da vil variablen antal blive netop 100 større, uanset om
opdateringerne foregår "samtidig".


Hvis ovenstående ikke er en mulighed, kan du måske have behov for at
lave en læse- eller skrive-lås på en eller flere tabeller. Kig efter
LOCK TABLES i MySQL-manualen.


Christian

Niels Andersen (13-03-2001)
Kommentar
Fra : Niels Andersen


Dato : 13-03-01 20:53

"Christian Schmidt" <christian@schmidt.net> skrev i en meddelelse
news:3AAE7B98.F3D50B17@schmidt.net...
> UPDATE tabel SET antal = antal + 1 WHERE id = 12345

Den ser ud til at gøre helt præcist det jeg ønsker. :)

Mange tak!


Mvh.

Niels Andersen



Mads Lie Jensen (13-03-2001)
Kommentar
Fra : Mads Lie Jensen


Dato : 13-03-01 22:27

On Tue, 13 Mar 2001 20:25:01 +0100, "Niels Andersen"
<niels-usenet@myplace.dk> wrote:

>Kan man i MySQL bede om at forhøje et heltal med én?
>
>Jeg spekulerer over et lille projekt, hvor der skal tælles en hel masse. Det
>er noget til et web-site.
>
>Normalt ville jeg hente den aktuelle værdi, lægge én til, og gemme den nye
>værdi.
>Men hvad nu hvis to gør det på samme tid? Så vil den ene jo gå tabt...
>Hvis jeg i stedet fyrer en SQL-ting af der siger at noget skal forhøjes med
>én, så kan der godt komme en mere millisekundet efter.

mySQL kan:
UPDATE tabel SET felt=felt+1 WHERE id='$id';

--
Mads Lie Jensen
Mads@gartneriet.dk
ICQ #25478403
http://www.gartneriet.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste