Heim  >  Artikel  >  Datenbank  >  SQL Server generiert eine eindeutige Bestellnummer mit hoher Parallelität

SQL Server generiert eine eindeutige Bestellnummer mit hoher Parallelität

藏色散人
藏色散人nach vorne
2020-08-29 12:01:382645Durchsuche

Vorwort

Vor ein paar Tagen habe ich einen Artikel darüber geschrieben, wie man in MySQL eine eindeutige Bestellnummer mit hoher Parallelität generiert. Jemand hat eine private Nachricht gesendet, um zu fragen, ob es eine SQL-Server-Version gibt. Heute Mittag habe ich speziell über die hohe Parallelität der SQL-Server-Version geschrieben. Die Implementierung der Generierung einer eindeutigen Bestellnummer ist tatsächlich die gleiche wie bei MySQL und SQL Server. Der Hauptgrund ist, dass einige ihrer Syntaxen etwas unterschiedlich sind. Sie werden also feststellen, dass die Textbeschreibung meines Artikels fast identisch ist, nur der Code und die Schnittstelle sind unterschiedlich.

Empfohlen: „SQL-Tutorial

1. Szenenreproduktion

Wenn in einem ERP-Einkaufs-, Verkaufs- und Lagersystem oder anderen Systemen wie 0A mehrere Personen gleichzeitig die Generierung von Bestellnummern durchführen, ist dies der Fall Für mehrere Personen ist es einfach, das gleiche Ergebnis zu erzielen. Eine Bestellnummer führt zu irreparablen Verlusten für das Unternehmen. 2. So vermeiden Sie Situationen mit hoher Parallelität, in denen die Bestellnummer nicht eindeutig ist. Wir können gespeicherte Prozeduren und Datentabellen verwenden Erstellen Sie eine Tabelle und erstellen Sie gespeicherte Prozeduren und gespeicherte Prozeduren. Verantwortlich für die Generierung von Bestellnummern, und die Tabelle ist für die Behandlung von Eindeutigkeitsproblemen verantwortlich

Wenn die gespeicherte Prozedur eine Bestellnummer generiert, schreiben Sie zuerst die Bestellnummer in die Tabelle und zeigen Sie sie dann an Ergebnis der Bestellnummer: Schreiben Sie die generierte Bestellnummer in die Tabelle. Es treten zwei Situationen auf. Da unsere Tabelle einen Primärschlüssel (Eindeutigkeit des Primärschlüssels) hat, kann


SQL Server generiert eine eindeutige Bestellnummer mit hoher Parallelität
in Folgendes geschrieben werden: Wenn die Tabelle nicht dieselbe Bestellnummer hat, wird die generierte Bestellnummer in die Tabelle geschrieben.

  • kann nicht geschrieben werden in: Wenn in der Tabelle dieselbe Bestellnummer vorhanden ist, d. Der Prozess der Generierung einer eindeutigen Bestellnummer bei hoher Parallelität

  • Im Folgenden wird der Prozess der Generierung einer eindeutigen Bestellnummer mithilfe 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 ( der Schlüssel zur eindeutigen Bestellnummer)

Schritt 2: Erstellen Sie eine gespeicherte Prozedur, die eine Bestellnummer generiert


Das Format zum Generieren einer Bestellnummer ist: benutzerdefiniertes Präfix + Jahr, Monat, Tag + Suffix (001, 002 , 003)1. Erstellen Sie zunächst eine gespeicherte Prozedur
SQL Server generiert eine eindeutige Bestellnummer mit hoher ParallelitätDer Parameter ist @BILL_TYPE

CREATE  PROCEDURE [dbo].[GetBillNO]
 @BILL_TYPE nvarchar(3)
2. Generieren Sie Jahr, Monat, Tag und Suffix

Das Jahr, der Monat und der Tag sind die aktuelle Systemzeit und die Anfangszeit Der Wert des Suffixes ist 0
declare @BILL_NO nvarchar(15);declare @currentDate nvarchar(15);declare @lastno INT = 0;set @currentDate = Convert(varchar(10),Getdate(),112);

3. Fragen Sie die Tabelle ab und erhalten Sie die Bestellnummer der Tabelle.

Fragen Sie die Tabelle ab und erhalten Sie das Präfix für den benutzerdefinierten Inhalt. Die neueste Bestellnummer und weisen Sie sie @BILL_NO zu

select @BILL_NO = isnull(BILL_NO,0)
    FROM temp_bill 
    WHERE SUBSTRING(BILL_NO,1,3) =BILL_TYPE and
    SUBSTRING(BILL_NO,4,8) =@currentDate
4. Generieren Sie eine Bestellnummer

Wenn die im vorherigen Schritt erhaltene Bestellnummer nicht leer ist, ist die neu generierte Bestellnummer +1 auf der ursprünglichen Bestellnummer

Beispiel: Erhaltene Bestellnummer: QNB20200615015

Die generierte Bestellnummer lautet: QNB20200615016

    Wenn die im vorherigen Schritt erhaltene Bestellnummer leer ist, lautet das Suffix der neu generierten Bestellnummer 001
  • Beispiel: Die generierte Bestellnummer: QNB20200615001


    IF @BILL_NO !='' begin
     SET @lastno = str(right(@BILL_NO, 3)+1) ; 
     set @BILL_NO = @BILL_TYPE+@currentDate+RIGHT('000'+CAST(@lastno as varchar),3);
     end;ELSE  begin
     set @BILL_NO = @BILL_TYPE+@currentDate+CAST('001' as varchar(20));END;
    Wann Ich habe dies getan, da der SQL-Server nicht über die LPAD-Funktion verfügt (die Anzahl der Ziffern, die kleiner als die angegebene Zahl ist, wird automatisch ausgefüllt), habe ich String-Splicing verwendet und dann rechts verwendet, um die 3 Ziffern auf der rechten Seite zu erreichen das Ziel (¯﹃¯), und es war langweilig
  • 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.

    Wenn dieselbe Bestellnummer vorhanden ist nicht in der Tabelle vorhanden ist, ist das Einfügen in die Tabelle erfolgreich erfolglos, dieser Schritt wird nicht ausgeführt. + 001 (die ersten Daten, also 001)
  • Das heißt:
QNB20200615001

2 Wenn ich es zum zweiten Mal eingebe, basieren die Daten auf dem Suffix Plus der neuesten Bestellnummer, da die Tabelle Daten enthält 1 ist: QNB20200615002

5. Alte Regeln
Ich hoffe, dieser Artikel kann allen helfen

Wenn Sie genug Punkte haben, laden Sie ihn einfach direkt herunter, geben Sie ihn trotzdem ein , der Code Der Betrag ist nicht groß

Wenn Sie Student sind und keine Punkte haben, können Sie privat mit mir chatten und ich sende Ihnen den Quellcode kostenlos zu

Code-Download-Link: SQL server_getbillno.bak

Code-Screenshot:

Das obige ist der detaillierte Inhalt vonSQL Server generiert eine eindeutige Bestellnummer mit hoher Parallelität. 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