MySQL-Methode mit hoher Parallelität zum Generieren einer eindeutigen Bestellnummer

MySQL-Methode mit hoher Parallelität zum Generieren einer eindeutigen Bestellnummer

Vorwort

Nachdem dieser Blogbeitrag veröffentlicht wurde, fragten einige Freunde, ob es eine SQL Server-Version gibt. Jetzt gibt es ==》 Portal

1. Szenenwiedergabe

Wenn in einem ERP-Lagerverwaltungssystem oder anderen Systemen wie 0A mehrere Personen gleichzeitig Bestellnummern generieren, können leicht mehrere Personen an die gleiche Bestellnummer gelangen, was zu irreparablen Verlusten für das Geschäft des Unternehmens führt.

2. So vermeiden Sie nicht eindeutige Bestellnummern in Situationen mit hoher Parallelität

Wir können gespeicherte Prozeduren und Datentabellen verwenden, um eine Tabelle und eine gespeicherte Prozedur zu erstellen. Die gespeicherte Prozedur ist für die Generierung der Bestellnummer verantwortlich, und die Tabelle ist für die Behandlung des Eindeutigkeitsproblems verantwortlich.

Bildbeschreibung hier einfügen

Wenn eine gespeicherte Prozedur eine Bestellnummer generiert, wird die Bestellnummer zuerst in die Tabelle geschrieben und dann das Bestellnummernergebnis angezeigt. Es gibt zwei Situationen, in denen die generierte Bestellnummer in die Tabelle geschrieben wird. Warum? Weil unsere Tabelle einen Primärschlüssel hat (Eindeutigkeit des Primärschlüssels)

  • Schreibbar: Wenn keine identische Bestellnummer in der Tabelle vorhanden ist, wird die generierte Bestellnummer in die Tabelle geschrieben.
  • Kann nicht geschrieben werden: Wenn dieselbe Bestellnummer in der Tabelle vorhanden ist, kann die generierte Bestellnummer nicht in die Tabelle geschrieben werden und die Bestellnummer kann nicht abgerufen werden. Dadurch wird sichergestellt, dass bei hoher Parallelität eine eindeutige Bestellnummer generiert wird

3. Der Prozess der Generierung eindeutiger Bestellnummern bei hoher Parallelität

Im Folgenden wird der Vorgang der Generierung einer eindeutigen Bestellnummer anhand von Code und tatsächlichen Vorgängen erläutert.

Schritt 1: Erstellen Sie eine Datentabelle und legen Sie das Bestellnummernfeld als Primärschlüssel fest (den Schlüssel zur eindeutigen Bestellnummer).

Bildbeschreibung hier einfügen

Schritt 2: Erstellen einer gespeicherten Prozedur zum Generieren der Bestellnummer

Das Format der generierten Bestellnummer ist: benutzerdefiniertes Präfix + Jahr, Monat, Tag + Suffix (001, 002, 003)
1. Erstellen Sie zunächst eine gespeicherte Prozedur <br /> 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))
BEGINNEN

2. Jahr, Monat, Tag und Suffix generieren <br /> Jahr, Monat, Tag ist die aktuelle Systemzeit und der Anfangswert des Suffixes ist 0

DECLARE aktuellesDatum varCHAR (15);
DECLARE letzte Nr. INT DEFAULT 0;
Wählen Sie DATE_FORMAT (JETZT(), '%Y%m%d') in aktuelles Datum aus.

3. Tabelle abfragen und Bestellnummer der Tabelle abrufen <br /> Tabelle abfragen und neueste Bestellnummer in Bezug auf Präfix und benutzerdefinierten Inhalt abrufen

Wählen Sie IFNULL (BILL_NO, 'nicht null') in BILL_NOP
 VON temp_bill 
 WHERE SUBSTRING(BILL_NO,1,3) = BILL_TYPE und
 SUBSTRING(RECHNUNGSNUMMER,4,8) =aktuellesDatum
 BESTELLUNG NACH RECHNUNGSNR. DESC LIMIT 1;

4. Bestellnummer generieren

Wenn die im vorherigen Schritt erhaltene Bestellnummer nicht leer ist, beträgt die neu generierte Bestellnummer +1 zur ursprünglichen Bestellnummer.

Beispiel: Erhaltene Bestellnummer: UIE20200611015
Die generierte Bestellnummer lautet: UIE20200611016

Wenn die im vorherigen Schritt erhaltene Bestellnummer leer ist, lautet das Suffix der neu generierten Bestellnummer 001
Beispiel: Generierte Bestellnummer: UIE20200611001

WENN BILL_NOP != '' DANN
 SETZEN Sie letzte Nummer = KONVERTIEREN (SUBSTRING (BILL_NOP, -3), DECIMAL); 
 WÄHLEN 
 CONCAT(RECHNUNGSTYP,aktuellesDatum,LPAD((letzteNr. + 1),3, '0')) INTO BILL_NOP;
ANDERS
 WÄHLEN 
 CONCAT(RECHNUNGSTYP,aktuellesDatum,LPAD((letzteNr. + 1),3, '0')) INTO BILL_NOP;
ENDE, WENN;

5. Fügen Sie die generierte Bestellnummer in die Tabelle ein . <br /> Wenn die gleiche Bestellnummer in der Tabelle vorhanden ist , schlägt das Einfügen in die Tabelle fehl. Wenn die gleiche Bestellnummer nicht in der Tabelle vorhanden ist , ist das Einfügen in die Tabelle erfolgreich.

EINFÜGEN IN temp_bill (RECHNUNGSNUMMER, RECHNUNGSTYP) WERTE (RECHNUNGSNUMMER, RECHNUNGSTYP);

6. Eindeutige Bestellnummer zurückgeben <br /> Wenn die Bestellung erfolgreich in die Tabelle eingefügt wurde, wird die eindeutige Bestellnummer zurückgegeben (wenn der vorherige Schritt nicht erfolgreich war, wird dieser Schritt nicht ausgeführt)

WÄHLEN SIE BILL_NOP;

4. Ergebnisse der Operation

1. Erstens gibt es keine Daten in meiner Tabelle, also ein Präfix (ich habe eingegeben: UIE) + Jahr, Monat und Tag (
20200611)+001 (das erste Datum, also 001)
Das ist: UIE20200611001

2 Wenn ich es zum zweiten Mal eingebe, wird das Suffix der neuesten Bestellnummer um 1 erhöht, da die Tabelle Daten enthält
Das ist: UIE20200611002

Bildbeschreibung hier einfügen

5. Eine Zusammenfassung, die keine Zusammenfassung ist

Link zum Download des Codes: mysql_getbillno.sql

Code-Screenshot:

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die Implementierung der hohen MySQL-Parallelität zum Generieren eindeutiger Bestellnummern. Weitere Informationen zur hohen MySQL-Parallelität zum Generieren eindeutiger Bestellnummern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • MySQL Series 10 MySQL-Transaktionsisolierung zur Implementierung der Parallelitätskontrolle
  • Detaillierte Erläuterung des MySQL Multi-Version Concurrency Control Mechanism (MVCC)-Quellcodes
  • Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL
  • MySQL-Methode zur Sperrensteuerung für Parallelität
  • Lösung für das Problem der MySQL-Transaktionsparallelität
  • So lösen Sie das Problem der hohen Parallelität in der MySQL-Datenbank
  • Wissenspunkte zum Prinzip der MySQL-Parallelitätskontrolle
  • Implementierung der MySQL-Mehrversions-Parallelitätskontrolle MVCC
  • So handhaben Sie gleichzeitige Aktualisierungen von MySQL-Daten
  • Erläuterung zur Optimierung der Tomcat+MySQL-Konfiguration mit hoher Parallelität
  • Wie erreicht MySQL die Parallelität mehrerer Versionen?

<<:  HTML-Tutorial: DOCTYPE-Abkürzung

>>:  Detaillierte Erklärung zur Verwendung von Filtereigenschaften in CSS

Artikel empfehlen

Installieren Sie Mininet aus dem Quellcode auf Ubuntu 16.04

Mininet Mininet ist eine leichtgewichtige, softwa...

...

Einige Schlussfolgerungen zur Entwicklung mobiler Websites

Die mobile Version der Website sollte zumindest ü...

Grafisches Tutorial zur kostenlosen Installationsversion von MySQL 5.7.21 winx64

Konfigurationsmethode für die kostenlose Installa...

Analyse der Benutzererfahrung beim Design von Facebook-Dating-Websites

<br />Verwandter Artikel: Analyse der Inform...

JavaScript-Grundlagen dieser Verweisung

Inhaltsverzeichnis Das Verfahren Im Objekt Verste...

So installieren Sie PostgreSQL11 auf CentOS7

Installieren Sie PostgreSQL 11 auf CentOS 7 Postg...

Wissen Sie, welche Möglichkeiten es gibt, in Vue Routen zu überspringen?

Inhaltsverzeichnis Die erste Methode: Router-Link...

Vue + SSM realisiert den Vorschaueffekt beim Hochladen von Bildern

Die aktuelle Anforderung lautet: Es gibt eine Sch...

Zwei Möglichkeiten zur Installation von Python3 auf Linux-Servern

Erste Methode Alibaba Cloud- und Baidu Cloud-Serv...