Heim  >  Artikel  >  Datenbank  >  Die hohe Parallelität von MySQL generiert eindeutige Bestellnummern

Die hohe Parallelität von MySQL generiert eindeutige Bestellnummern

藏色散人
藏色散人nach vorne
2020-08-29 11:59:213917Durchsuche

Vorwort

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

1. Szenenreproduktion

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 wirdDie hohe Parallelität von MySQL generiert eindeutige Bestellnummern

3. Der Prozess der Generierung einer eindeutigen Bestellnummer bei hoher Parallelität

    Das Folgende ist: Verwenden Sie Code und tatsächliche Vorgänge, um den Prozess der Generierung einer eindeutigen Bestellnummer zu erläutern
  • Schritt 1: Erstellen Sie eine Datentabelle und legen Sie das Bestellnummernfeld als Primärschlüssel fest (der Schlüssel zur eindeutigen Bestellnummer)

Schritt 2: Erstellen Sie eine generierte Bestellung. Die nummerierte gespeicherte Prozedur

generiert Bestellnummern im Format: benutzerdefiniertes Präfix + Jahr, Monat, Tag + Suffix (001, 002, 003 )
1. Erstellen Sie zunächst eine gespeicherte Prozedur

Die hohe Parallelität von MySQL generiert eindeutige BestellnummernDie 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
2. Generieren Sie Jahr, Monat, Tag und Suffix


Jahr, Monat und Tag ist die aktuelle Systemzeit und der Anfangswert des Suffixes ist 0

DECLARE 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

Die generierte Bestellnummer lautet: UIE20200611016

, wenn die im vorherigen Schritt erhaltene Bestellnummer leer ist, ist das Suffix der neu generierten Bestellnummer 001
    Example: generierte Bestellnummer: UIE20200611001

  • 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;
  • 5. Fügen Sie die generierte Bestellnummer in die Tabelle ein.


    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) ;
6. Eindeutige Bestellnummer zurückgeben

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;

Viertens. Ergebnisse ausführen1. Erstens gibt es keine Daten in meiner Tabelle, es werden das Präfix (was ich eingegeben habe: UIE) + Jahr, Monat und Tag (
20200611) + 001 (die ersten Daten) generiert ist 001) Das ist: UIE20200611001

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:

Die hohe Parallelität von MySQL generiert eindeutige Bestellnummern

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen