2017-06-27 1 views
-1

Ich möchte eine eindeutige Bestellnummer für mein Skript erhalten. jetzt habe ich eine mysql-Tabelle, die ein Feld 'next_order_number' speichert. Wenn ich eine Nummer brauche, lese ich die Tabelle, schnappe das Feld ein Inkrement und schreibe es zurück in die Tabelle.php/mysql - get einmalige Bestellnummer sequestiel

jetzt bekomme ich manchmal das problem, dass ich die nummern zweimal bekomme - die gleiche nummer zweimal! Dies passiert, wenn das Skript zweimal fast gleichzeitig ausgeführt wird.

Was könnte der beste Weg sein, damit umzugehen? Die Nummern sollten sequenziert werden - keine Zufallszahlen!

dank bisher - jogi

+0

Ich weiß nicht, wie Sie Tabellen Aussehen verwenden könnte wie oder sein Hauptzweck, Nummer manuell zu erhöhen, aber wäre es nicht besser, wenn diese Nummer 'AUTO_INCREMENT' von der Datenbank selbst verwenden würde? – debute

+0

Suchen Sie nach "MySQL Sequence Generator" – tadman

+0

sicher, aber ich muss den Auftrag in einer Datenbank und in einer CSV-Datei schreiben. – user1121575

Antwort

1

ich mit @debute vereinbaren die AUTO_INCREMENT wahrscheinlich die beste Option wäre, obwohl Sie die MAX() Funktionalität ... https://dev.mysql.com/doc/refman/5.7/en/example-maximum-column.html

+0

ok, aber ich brauche den inkrementierten Wert für meine CSV-Datei. Wie kann ich es lesen, wenn der Schlüssel automatisch inkrementiert wird? – user1121575

+0

https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html –

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzubeziehen und die Link als Referenz. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –