La haute concurrence du serveur SQL génère un numéro de commande unique
Avant-propos
Il y a quelques jours, j'ai écrit un article sur la façon de générer des numéros de commande uniques dans MySQL à haute concurrence , quelqu'un a envoyé un message privé pour demander s'il existe une version du serveur SQL Aujourd'hui à midi, j'ai écrit une implémentation à haute concurrence de la version du serveur SQL pour générer un numéro de commande unique. et SQL Server sont les mêmes. La raison principale est que certaines de leurs syntaxes sont différentes, vous constaterez donc que la description textuelle de cet article est presque la même, seuls le code et l'interface sont différents.
Recommandé : "Tutoriel SQL"
1. Reproduction de scène
Dans un système d'achat et de vente ERP ou d'autres systèmes tels que 0A, le cas échéant sont multiples Si des personnes effectuent l'opération de génération de numéros de commande en même temps, il est facile pour plusieurs personnes d'obtenir le même numéro de commande, entraînant des pertes irréparables pour l'activité de l'entreprise
2. Comment éviter les situations de forte concurrence où les numéros de commande ne sont pas uniques
Nous pouvons utiliser des procédures stockées et des tables de données pour construire une table et créer des procédures stockées. La procédure stockée est responsable de la génération des numéros de commande, et la table est responsable de la gestion des problèmes d'unicitéLorsque la procédure stockée génère un numéro de commande, écrivez d'abord le numéro de commande dans le tableau, puis affichez le résultat du numéro de commande. Lors de l'écriture du numéro de commande généré dans le tableau, deux situations se produiront. Parce que notre table a une clé primaire (unicité de la clé primaire)
- peut s'écrire : Lorsqu'il n'y a pas de même numéro de commande dans la table, le numéro de commande généré est écrit dans la table
- ne peut pas être écrit : lorsque le même numéro de commande existe dans le tableau, le numéro de commande généré ne peut pas être écrit dans le tableau et le numéro de commande ne peut pas être obtenu, garantissant ainsi qu'un numéro de commande unique est généré sous haute concurrence
Étape 1 : Créez une table de données et définissez le champ du numéro de commande comme clé primaire (la clé du numéro de commande unique)
Étape 2 : Créez une procédure stockée pour générer le numéro de commande Le format du numéro de commande généré est : préfixe personnalisé + année, mois et jour + suffixe (001, 002, 003)
1. Créez d'abord une procédure stockée Le paramètre est @ BILL_TYPE
CREATE PROCEDURE [dbo].[GetBillNO] @BILL_TYPE nvarchar(3)
2 Générez l'année, le mois et le jour et le suffixe l'année, le mois et le jour sont. l'heure système actuelle et la valeur initiale du suffixe est 0
declare @BILL_NO nvarchar(15);declare @currentDate nvarchar(15);declare @lastno INT = 0;set @currentDate = Convert(varchar(10),Getdate(),112);
3. Interrogez la table et obtenez le numéro d'ordre de la table Interrogez la table et obtenez le dernier numéro de commande dont le préfixe est lié au contenu personnalisé et attribuez-le à @BILL_NO
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 Générez le numéro de commande
- Si le numéro de commande obtenu à l'étape précédente n'est pas vide, le numéro de commande nouvellement généré sera +1 sur le numéro de commande d'origine
-
Exemple : Le numéro de commande obtenu : QNB20200615015
Le numéro de commande généré est : QNB20200615016 Si le numéro de commande obtenu à l'étape précédente est vide, le suffixe du numéro de commande nouvellement généré est 001 -
Exemple : Générer Le numéro de commande : 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;
Copier après la connexionEn faisant cela, comme le serveur SQL n'a pas la fonction LPAD (il remplira automatiquement le nombre de chiffres spécifié), j'ai donc utilisé l'épissage de chaînes, puis utilisé correctement aller Récupérez les 3 chiffres à droite pour atteindre l'objectif (¯﹃¯), et c'est parti
Si pareil. Le numéro de commande existe dans le tableau, l'insertion dans le tableau échoue Si le même numéro de commande n'existe pas dans le tableau, l'insertion dans le tableau est réussie
insert into Temp_Bill(BILL_NO,BILL_TYPE) values(@BILL_NO ,@BILL_TYPE )
6. numéro de commande unique
Lorsque la commande est insérée avec succès dans le tableau, le numéro de commande unique peut être renvoyé (Si l'étape précédente échoue, cette étape ne sera pas exécutée)
select @BILL_NO as BILL_NO
4. Résultats d'exécution
1. Tout d'abord, il n'y a aucune donnée dans ma table, et le préfixe sera généré (ce que j'ai saisi : UIE ) + année, mois et jour (20200615) + 001 (la première donnée , donc c'est 001)
C'est-à-dire :QNB20200615001
2 Lorsque je le saisis pour la deuxième fois, en raison du Lorsqu'il y a des données, le dernier numéro de commande sera ajouté avec un suffixe de 1
QNB20200615002 5. Anciennes règles
J'espère que cet article L'article pourra aider tout le monde
Si vous avez suffisamment de points, téléchargez-le directement. Si vous n'avez pas de points, tapez sur l'image. La quantité de code n'est pas grande de toute façonSi vous êtes étudiant et n'avez pas de points, vous pouvez m'envoyer un message en privé et je vous l'enverrai gratuitement Code source
Lien de téléchargement du code : SQL server_getbillno.bak
Capture d'écran du code :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Microsoft SQL Server est un système de gestion de base de données relationnelle lancé par Microsoft. Il s'agit d'une plate-forme de base de données complète qui utilise des outils de business intelligence (BI) intégrés pour fournir une gestion des données au niveau de l'entreprise. Elle est facile à utiliser, a une bonne évolutivité et a un niveau élevé. degré d'intégration avec les logiciels associés. Avantages élevés. Le moteur de base de données SQL Server fournit des fonctions de stockage plus sécurisées et plus fiables pour les données relationnelles et les données structurées, permettant aux utilisateurs de créer et de gérer des applications de données hautement disponibles et performantes pour les entreprises.

SQLServer ou MySQL ? Les dernières recherches révèlent la meilleure sélection de bases de données. Ces dernières années, avec le développement rapide d'Internet et du Big Data, la sélection de bases de données est devenue un problème important auquel sont confrontés les entreprises et les développeurs. Parmi les nombreuses bases de données, SQL Server et MySQL, qui sont les deux bases de données relationnelles les plus courantes et les plus utilisées, sont très controversées. Alors, entre SQLServer et MySQL, lequel choisir ? Les dernières recherches nous éclairent sur ce problème. Tout d'abord, laissez

Introduction à l'utilisation de PDO pour se connecter à une base de données Microsoft SQL Server : PDO (PHPDataObjects) est une interface unifiée pour accéder aux bases de données fournies par PHP. Il offre de nombreux avantages, tels que la mise en œuvre d'une couche d'abstraction de la base de données et la possibilité de basculer facilement entre différents types de bases de données sans modifier une grande quantité de code. Cet article explique comment utiliser PDO pour se connecter à une base de données Microsoft SQL Server et fournit quelques exemples de code associés. étape

Avec la popularité d’Internet, le développement de sites Web et d’applications est devenu l’activité principale de nombreuses entreprises et particuliers. Les bases de données PHP et SQLServer sont deux outils très importants. PHP est un langage de script côté serveur qui peut être utilisé pour développer des sites Web dynamiques ; SQLServer est un système de gestion de bases de données relationnelles développé par Microsoft et propose un large éventail de scénarios d'application. Dans cet article, nous aborderons le développement de PHP et SQL Server, ainsi que leurs avantages, inconvénients et méthodes d'application. Tout d'abord, commençons

Dans le développement Web, la combinaison de PHP et MySQL est très courante. Cependant, dans certains cas, nous devons nous connecter à d’autres types de bases de données, comme SQL Server. Dans cet article, nous aborderons cinq manières différentes de se connecter à SQL Server à l'aide de PHP.

SQL Server vs MySQL : quelle base de données est la plus adaptée à une architecture haute disponibilité ? Dans le monde actuel axé sur les données, la haute disponibilité est l'une des nécessités pour créer des systèmes fiables et stables. En tant que composant essentiel du stockage et de la gestion des données, la haute disponibilité de la base de données est cruciale pour le fonctionnement commercial de l'entreprise. Parmi les nombreuses bases de données, SQLServer et MySQL sont des choix courants. Alors en termes d’architecture haute disponibilité, quelle base de données est la plus adaptée ? Cet article comparera les deux et donnera quelques suggestions.

SQLServer et MySQL sont actuellement deux systèmes de gestion de bases de données relationnelles (SGBDR) très populaires. Ce sont tous deux des outils puissants pour stocker et gérer des données à grande échelle. Cependant, ils présentent certaines différences dans le traitement des données à grande échelle. Cet article comparera SQL Server et MySQL, en se concentrant sur leur adéquation au traitement de données à grande échelle. Tout d’abord, comprenons les caractéristiques de base de SQLServer et MySQL. SQLServer est développé par Microsoft

Avec le développement continu d’Internet, la sélection des bases de données est devenue de plus en plus importante. Parmi les nombreuses bases de données, SQLServer et MySQL sont deux options de premier plan. SQLServer est un système de gestion de bases de données relationnelles développé par Microsoft, tandis que MySQL est un système de gestion de bases de données relationnelles open source. Alors comment choisir la meilleure solution de base de données entre SQLServer et MySQL ? Tout d’abord, nous pouvons comparer ces deux bases de données en termes de performances. SQLServer est en train de traiter
