Nachdem dieser Blog-Beitrag veröffentlicht wurde, fragte ein Freund, ob es eine SQL-Server-Version gäbe. Jetzt gibt es „SQL-Server mit hoher Parallelität, um eine eindeutige Bestellnummer zu generieren“
Empfohlen: „ MySQL-Tutorial》
Wenn in einem ERP-Einkaufs-, Verkaufs- und Lagersystem oder anderen Systemen wie 0A mehrere Personen gleichzeitig den Vorgang der Generierung von Bestellnummern durchführen, ist dies der Fall Es ist für mehrere Personen einfach, dieselbe Bestellnummer zu erhalten, was zu irreparablen Verlusten für das Unternehmen führt Gespeicherte Prozeduren erstellen. Die Tabelle ist für die Behandlung des Eindeutigkeitsproblems verantwortlich. Wenn die gespeicherte Prozedur eine Bestellnummer generiert, wird zuerst die Bestellnummer in die Tabelle geschrieben und dann die Bestellung Das Nummernergebnis wird angezeigt. Wenn die generierte Bestellnummer in die Tabelle geschrieben wird, treten zwei Situationen auf. Da unsere Tabelle einen Primärschlüssel (Eindeutigkeit des Primärschlüssels) hat, kann
geschrieben werden: Wenn die Tabelle nicht dieselbe Bestellnummer hat, das heißt, wird die generierte Bestellnummer in die Tabelle geschrieben
kann nicht geschrieben werden: wenn die In der Tabelle ist dieselbe Bestellnummer vorhanden. Die Bestellnummer, d. h. die generierte Bestellnummer kann nicht in die Tabelle geschrieben und die Bestellnummer nicht abgerufen werden, wodurch sichergestellt wird, dass bei hoher Parallelität eine eindeutige Bestellnummer generiert wird
3. Der Prozess der Generierung einer eindeutigen Bestellnummer bei hoher Parallelität
Die Eingabe ist BILL_TYPE (Präfix) und die Ausgabe ist BILL_NOP (Bestellnummer)
CREATE DEFINER = CURRENT_USER PROCEDURE `getbillno`(in BILL_TYPE VARCHAR(3), out BILL_NOP varchar(25))BEGIN
Jahr, Monat und Tag ist die aktuelle Systemzeit und der Anfangswert des Suffixes ist 0DECLARE currentDate varCHAR (15);DECLARE lastno INT DEFAULT 0;SELECT DATE_FORMAT(NOW(), '%Y%m%d') INTO currentDate;
3 Fragen Sie die Tabelle ab und erhalten Sie die Bestellnummer der Tabelle. Fragen Sie die Tabelle ab und erhalten Sie die neueste Bestellnummer, deren Präfix lautet bezogen auf den benutzerdefinierten Inhalt
SELECT IFNULL(BILL_NO, 'notnull') INTO BILL_NOP FROM temp_bill WHERE SUBSTRING(BILL_NO,1,3) =BILL_TYPE and SUBSTRING(BILL_NO,4,8) =currentDate ORDER BY BILL_NO DESC LIMIT 1;
4. Bestellnummer generieren
Wenn die im vorherigen Schritt erhaltene Bestellnummer nicht leer ist, ist die neu generierte Bestellnummer +1 auf der ursprünglichen Bestellnummer
Beispiel: Erhaltene Bestellnummer: UIE20200611015
, wenn die im vorherigen Schritt erhaltene Bestellnummer leer ist, ist das Suffix der neu generierten Bestellnummer 001
IF BILL_NOP !='' THEN SET lastno = CONVERT(SUBSTRING(BILL_NOP, -3), DECIMAL) ; SELECT CONCAT(BILL_TYPE,currentDate,LPAD((lastno + 1),3, '0')) INTO BILL_NOP ;ELSE SELECT CONCAT(BILL_TYPE,currentDate,LPAD((lastno + 1),3, '0')) INTO BILL_NOP ;END IF;
Wenn dieselbe Bestellnummer in der Tabelle vorhanden ist, schlägt das Einfügen in die Tabelle fehl Tabelle ist erfolgreich
INSERT INTO temp_bill (BILL_NO, BILL_TYPE) VALUES (BILL_NOP,BILL_TYPE) ;
Wenn die Bestellung erfolgreich in die Tabelle eingefügt wurde, kann die eindeutige Bestellnummer zurückgegeben werden (wenn der vorherige Schritt nicht erfolgreich ist, wird dieser Schritt nicht ausgeführt)
SELECT BILL_NOP;
2 Wenn ich es zum zweiten Mal eingebe, wird aufgrund der Tabelle Wenn Daten vorhanden sind, wird 1 zum Suffix der neuesten Bestellnummer hinzugefügt, das heißt: UIE20200611002
5. Eine Zusammenfassung, die keine Zusammenfassung ist
Der Selbstbericht eines bescheidenen Neulings:
Ich hoffe, dieser Artikel kann allen helfen
Wenn Sie genug Punkte haben, laden Sie ihn einfach herunter. Wenn Sie keine Punkte haben, geben Sie auf dem Bild ein. Die Codemenge ist sowieso nicht groß. Wenn Sie Student sind und keine Punkte haben, können Sie mir eine private Nachricht senden, und ich sende Ihnen den Quellcode kostenlos. Code-Download-Link : mysql_getbillno .sqlCode-Screenshot:
Das obige ist der detaillierte Inhalt vonDie hohe Parallelität von MySQL generiert eindeutige Bestellnummern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!