Table des matières
Avant-propos
1. Reproduction de scène
2. Comment éviter les situations de forte concurrence où les numéros de commande ne sont pas uniques
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)
J'espère que cet article L'article pourra aider tout le monde
Maison base de données SQL La haute concurrence du serveur SQL génère un numéro de commande unique

La haute concurrence du serveur SQL génère un numéro de commande unique

Aug 29, 2020 pm 12:01 PM
sql server

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é
La haute concurrence du serveur SQL génère un numéro de commande uniqueLorsque 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

3. Le processus de génération d'un numéro de commande unique sous haute concurrence

Ce qui suit expliquera le processus de génération d'un numéro de commande unique à l'aide du code. et opérations réelles


É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)
La haute concurrence du serveur SQL génère un 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)
Copier après la connexion

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);
Copier après la connexion

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
Copier après la connexion

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 connexion
  • En 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

5 Insérez le numéro de commande généré dans le tableau

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 )
Copier après la connexion

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
Copier après la connexion

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

, soit :

QNB20200615002

La haute concurrence du serveur SQL génère un numéro de commande unique 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çon

Si 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Quel logiciel est Microsoft SQL Server ? Quel logiciel est Microsoft SQL Server ? Feb 28, 2023 pm 03:00 PM

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.

SQL Server ou MySQL ? Une nouvelle recherche révèle les meilleurs choix de bases de données. SQL Server ou MySQL ? Une nouvelle recherche révèle les meilleurs choix de bases de données. Sep 08, 2023 pm 04:34 PM

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

Comment se connecter à une base de données Microsoft SQL Server à l'aide de PDO Comment se connecter à une base de données Microsoft SQL Server à l'aide de PDO Jul 29, 2023 pm 01:49 PM

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

Développement de bases de données PHP et SQL Server Développement de bases de données PHP et SQL Server Jun 20, 2023 pm 10:38 PM

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

Une brève analyse de cinq méthodes de connexion de SQL Server à PHP Une brève analyse de cinq méthodes de connexion de SQL Server à PHP Mar 21, 2023 pm 04:32 PM

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é ? SQL Server vs MySQL : quelle base de données est la plus adaptée à une architecture haute disponibilité ? Sep 10, 2023 pm 01:39 PM

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.

Comparaison SQL Server et MySQL : lequel est le meilleur pour le traitement de données à grande échelle ? Comparaison SQL Server et MySQL : lequel est le meilleur pour le traitement de données à grande échelle ? Sep 09, 2023 am 09:36 AM

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

SQL Server et MySQL rivalisent, comment choisir la meilleure solution de base de données ? SQL Server et MySQL rivalisent, comment choisir la meilleure solution de base de données ? Sep 10, 2023 am 08:07 AM

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

See all articles