Re: Locks: Sicheres hochzählen in multiuserumgebung
- From: "Christoph Muthmann" <c.muthmann@xxxxxxxxxxxxxxxxxxx>
- Date: Tue, 25 Nov 2008 13:59:09 +0100
mike wrote:
Hi !
ist bei
update User1 set counter=(select counterfrom User1 where ID=4)+1
where ID=4
nicht die gefahr, dass wenn zwei aufrüfe gleichzeitig kommen, beide
denselben wert zunächst auslesen aus der table (da zunächst noch ein
shared lock ist), und dann beide hintereinander auf denselben wert
updaten (da ja dann exclusive lock), und der zähler dann nur um 1
erhöht wurde, anstatt um 2 ? Oder wartet der zweite user mit dem
select bis das update des 1. users fertig ist ? wirkliche
gleichzeitigkeit kann es ja nciht geben oder ?
Hallo Michael,
das Update setzt die Sperre, so dass der zweite User nicht auch ein Update
absetzen kann. Das Select ist dann quasi im Update gekapselt und befindet
sich damit in der gleichen Transaktion.
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
http://www.insidesql.org
.
- References:
- Locks: Sicheres hochzählen in multiuserumgebung
- From: mike
- Re: Locks: Sicheres hochzählen in multiuserumgebung
- From: Henry Habermacher
- Re: Locks: Sicheres hochzählen in multiuserumgebung
- From: Elmar Boye
- Re: Locks: Sicheres hochzählen in multiuserumgebung
- From: mike
- Locks: Sicheres hochzählen in multiuserumgebung
- Prev by Date: Re: Unterschiedliche Ausführungszeiten
- Next by Date: Default in NamedInstance und umgekehrt
- Previous by thread: Re: Locks: Sicheres hochzählen in multiuserumgebung
- Next by thread: Re: Locks: Sicheres hochzählen in multiuserumgebung
- Index(es):
Relevant Pages
|