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“
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
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
Schritt 1: Erstellen Sie eine Datentabelle und legen Sie das Bestellnummernfeld als Primärschlüssel fest ( der Schlüssel zur eindeutigen Bestellnummer)
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
Der Parameter ist @BILL_TYPE
CREATE PROCEDURE [dbo].[GetBillNO] @BILL_TYPE nvarchar(3)2. Generieren Sie Jahr, Monat, Tag und Suffix
declare @BILL_NO nvarchar(15);declare @currentDate nvarchar(15);declare @lastno INT = 0;set @currentDate = Convert(varchar(10),Getdate(),112);
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) =@currentDate4. 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
Die generierte Bestellnummer lautet: QNB20200615016
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)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
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!