Colonne d'auto-incrémentation SQL, regroupée par catégorie
Question :
Comment créer une solution SQL qui incrémente automatiquement une colonne ("category_id") dans chaque catégorie tout en préservant l'identifiant de séquence global ("id") et les contraintes de catégorie uniques ?
Réponse :
Il n'est généralement pas recommandé d'essayer ce que vous décrivez car cela pourrait provoquer des incohérences dans un environnement multi-utilisateurs. Voici quelques raisons :
-
Condition de concurrence : Plusieurs utilisateurs accédant simultanément à la base de données peuvent entraîner la duplication ou l'omission des valeurs Category_id.
-
Problèmes de transaction : Si une opération d'insertion implique plusieurs requêtes, la cohérence des données peut ne pas être garantie en cas d'erreur.
Méthode recommandée :
-
Supprimer la colonnecategory_id : Elle ne fournit aucune information que l'identifiant et la catégorie eux-mêmes ne fournissent pas.
-
Utilisez id comme identifiant global : Il est lui-même sérialisé et auto-incrémenté.
-
Générer Category_id à la volée en utilisant row_number() : Cette fonction peut attribuer des numéros séquentiels dans chaque catégorie, donnant l'effet souhaité sans les inconvénients d'une colonne Category_id distincte.
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!