DB Schreibsperre für Update

Für eine automatische Kundennummern-Vergabe soll die nächste freie KDNR aus einer Datei (oder Datenbank) gelesen, um eins erhöht und dann wieder gespeichert werden (update). In der Zeit zwischen Einlesen und Update complete darf diese Datei (Datenbank) natürlich nicht von anderer Seite gelesen und schon gar nicht verändert werden.

Ich komme von der Host-Programmierung, hier gab es die Möglichkeit, die Datei (Datenbank) für diesen Zeitraum für Andere zu sperren (Lesen für Update). Leider konnte ich hierzu nirgends etwas finden.

Wie also kann ich sowas in PHP sowohl für Dateien als auch für eine MySQL-DB realisieren bzw. ist sowas hier überhaut erforderlich? Wie habt ihr dieses Problem gelöst, was sind euere Erfahrungen?

Ich selbst bin übrigens „fortgeschrittener PHP/MySQL -Anfänger“.

Danke für euere Tipps!

Robi

denke mal dass das nicht notwendig ist…
ich weiss zwar nicht, wie du das aus einer Datei regeln willst, aber zumindest mysql als Datenbank bietet eigentlich schon alles, was Du brauchst…
Zum einen kannst Du für die inserts von neuen Kundennummern ja auto_increment verwenden. Damit wird automatisch numeriert mit eins mehr als der höchste in der Tabelle stehende (oder ehemals stehende) id.
Für das Problem, dass das ganze eindeutig sein muss setzt Du die Spalte einfach auf unique und schon können keine updates gemacht werden, deren id schon belegt ist.

Was anderes wirds natürlich, wenn Du auch id’s zwischendrin suchen würdest… aber da würdest Du wohl um eine Schleife nicht herumkommen, die die id’s einzeln überprüft (dann aber alle id’s abholen und in einem while bzw for durchgehen und nicht für jede id ein neues select schicken).

Diese fortlaufende Nummer ist letztlich nur ein Teil der gesamten Kundennr., also werde ich deinen Rat folgen und dieses Feld auf unique setzten; damit müsste das dann wirklich gelöst sein. Danke!

Tipp
wenn Du Dir die Arbeit ersparen willst eine Funktion zu schreiben, die Dir immer die erste freie Nr. ausgibt, dann teil doch die Kundennummer auf zwei Spalten auf - einmal die ID und einmal alles was davor an Text kommt… und dann halt wieder auto_increment auf die id.