Maison > base de données > tutoriel mysql > Comment puis-je obtenir des séquences d'incrémentation automatique distinctes basées sur des valeurs de clé primaire spécifiques dans une base de données ?

Comment puis-je obtenir des séquences d'incrémentation automatique distinctes basées sur des valeurs de clé primaire spécifiques dans une base de données ?

Barbara Streisand
Libérer: 2025-01-04 12:24:34
original
492 Les gens l'ont consulté

How Can I Achieve Separate Auto-Increment Sequences Based on Specific Primary Key Values in a Database?

Incréments automatiques multiples pour des valeurs de clé primaire spécifiques

Question :

Comment un La base de données fournit-elle différentes clés d'incrémentation automatique pour des valeurs de clé primaire spécifiques, de sorte que chaque valeur de clé primaire ait sa propre séquence indépendante ? Par exemple, si une table contient une colonne "id" avec incrémentation automatique et une colonne "uid" pour l'ID utilisateur, est-il possible d'avoir une séquence d'auto-incrémentation différente pour chaque valeur "uid" ?

Réponse :

MySQL avec MyISAM Moteur

Le moteur MyISAM de MySQL prend en charge cette fonctionnalité. Lorsque AUTO_INCREMENT est spécifié sur une colonne secondaire dans un index à plusieurs colonnes, la valeur générée pour la colonne AUTO_INCREMENT est calculée comme suit : MAX(auto_increment_column) 1 WHERE prefix=given-prefix.

Autres solutions

Tableau Exclusif Verrouillage

Une solution alternative consiste à acquérir un verrou de table exclusif avant de tenter un INSERT. Cela empêche les INSERTs simultanés de créer des conditions de concurrence. Cependant, il sérialise l'accès à la table, limitant le débit.

Génération d'identifiant externe

Une autre approche consiste à générer le numéro d'identification en dehors de la portée de la transaction, en utilisant des mécanismes comme Memcached ou un service centralisé. Cela garantit des valeurs d'identifiant uniques sans dépendre de la fonctionnalité de la base de données.

Considérations

La mise en œuvre de cette fonctionnalité nécessite un examen attentif des problèmes potentiels, tels que :

  • Annulations et écarts dans les séquences d'incrémentation automatique
  • Échec des INSERTs en raison d'une autre table contraintes
  • Renumérotation après suppression de lignes
  • Maintien de la cohérence en cas de génération d'identifiant externe

Avertissement :

L'InnoDB Le moteur de MySQL ne prend pas en charge cette fonctionnalité.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal