Thread Script wird doppelt ausgeführt?! (8 answers)
Opened by Gast at 2007-08-20 12:02

pq
 2007-08-20 13:04
#98406 #98406
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
das erhöhen der rechnungsnummer muss auf jeden fall atomar passieren.
du sagst leider nichts darüber, wie du die nummer erhöhst, ob du transaktionen
benutzt oder nicht etc.
szenario: prozess P1 liest rechungsnummer 123. prozess P2 liest rechnungsnummer 123.
P1 verschickt rechnung und schreibt 124 in die datenbank. P2 verschickt rechnung
und schreibt auch 124 in die datenbank.

lösung: wenn keine anderen daten davon abghängig sind, erhöhe die nummer folgendermassen:
[sql]UPDATE foo set rechnungsnummer = rechnungsnummer + 1 where ...[/sql]
das ist eine atomare operation.
ansonsten musst du InnoDB benutzen und transaktionen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Script wird doppelt ausgeführt?!