hi again,
Oder wie sollte man sowas generell machen?
Noch ein paar "Nachtgedanken"...
Der Vorgang über das Bezahlsystem muss transaktionssicher sein, er ist, auf Deine Tabelle bezogen, vergleichbar mit einer Kontenbewegung. Transaktionssicher heißt, "Lesen UND Schreiben" ist unteilbar, atomar. Dieser Prozess dauert jedoch länger als gewünscht, unschön wäre es, wenn im Zeitraum eines (oder mehrerer) Bezahlvorganges keiner mehr Lesen kann. Und eine Überbuchung sollte nicht stattfinden. Ein Ex_Lock auf die Tabelle wäre technisch ok, praktisch jedoch unbrauchbar, weil das Lesen blockiert wird. Du brauchst einen "Lese-Puffer" für Deine Besucher.
Ich würde es so machen, dass ich den Lesepuffer in eine normale Tabelle(n) lege, die Transaktionen jedoch eine transaktionssichere Tabelle(n). Jedesmal, wenn eine Transaktion abgeschlossen ist (commit), werden per Trigger die Daten aus der Transaktion mit dem Puffer abgeglichen.
Natürlich hat das auch den Nachteil, dass sich einer über einen freien Platz freut und beim Bezahlen merken muss, dass ein Anderer schneller war. Aber wie das immer so ist im Leben: Wer zuerst kommt, mahlt zuerst *G.
Hotti