Gestion de clés d'incrémentation automatique uniques pour différentes valeurs de clé primaire
Contexte
Un utilisateur rencontre le besoin de créer une table avec une clé primaire ( par exemple, id) avec une fonctionnalité d'incrémentation automatique et une autre clé (par exemple, uid) qui référence les utilisateurs. Ils recherchent un moyen de générer des valeurs d'incrémentation automatique uniques pour id pour chaque uid valeur distincte.
Solution
Moteur MyISAM de MySQL
- MyISAM prend en charge l'incrémentation automatique sur les colonnes secondaires dans index multi-colonnes.
- Cela génère des valeurs id comme la valeur maximale auto_increment_column plus 1 pour un préfixe uid donné.
Alternative Approches
Déclencheurs
- Ne peut pas émuler de manière fiable le comportement d'incrémentation automatique sans verrouillage de table.
- Les insertions simultanées peuvent entraîner un id en double valeurs dues à des problèmes de timing.
Supplémentaires Considérations
-
Verrouillage de table exclusif : L'acquisition d'un verrou de table exclusif permet des insertions contrôlées mais peut avoir un impact sur les performances.
-
Solution non transactionnelle : Garder une trace du dernier id généré par uid transaction extérieure la portée peut être difficile à mettre en œuvre et à maintenir.
-
Valeurs uniques ou consécutives : Assurez une gestion appropriée des lacunes dans les valeurs id en raison d'annulations, d'échecs d'insertion ou de suppressions .
Autres moteurs de bases de données
- La solution fournie est spécifique au moteur MyISAM de MySQL.
- D'autres moteurs de bases de données peuvent ne pas prendre en charge cette fonctionnalité de manière native.
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!