Dans la leçon précédente, vous avez configuré des règles de navigation visant à garantir que l'utilisateur entre un ID unique pour chaque nouvelle annonce créée. Ce procédé manque à la fois de convivialité et de réalisme, car il peut contraindre l'utilisateur à essayer plusieurs ID avant d'en trouver un qui ne soit pas déjà utilisé. Dans cette leçon, vous allez configurer la génération automatique de clés afin que la base de données attribue elle-même un nouveau numéro à chaque nouvel enregistrement créé.
La génération automatique de clés est un mécanisme complexe. En bref, la base de données est capable de choisir de nouvelles clés si elle comporte une table spécialement réservée à la génération de clés. Cette table doit comporter une colonne d'incréments contenant la liste des clés non utilisées, et une colonne d'identités contenant une liste de numéros séquentiels, commençant à 1. Lorsque la base de données a besoin d'une nouvelle clé, elle extrait celle de la ligne qui contient la valeur 1 dans sa colonne d'identités. La table est ensuite mise à jour afin qu'une nouvelle clé soit prête pour la fois suivante.
Lorsque la base de données a besoin d'une nouvelle clé unique, elle recherche la ligne qui contient la valeur 1 dans la colonne d'identités. La colonne d'incréments de cette ligne est celle qui contient la première clé disponible. La base de données utilise cette clé et met à jour la table afin qu'une nouvelle clé soit disponible pour la fois suivante.
| Colonne d'identités | Colonne d'incréments |
|---|---|
| 3 | 78 |
| 4 | 3 |
| 1 | 65 |
| 2 | 12 |
Une fois que cette clé a été extraite de la table, cette dernière est mise à jour afin qu'une nouvelle clé soit prête pour la fois suivante. La base de données peut également extraire plusieurs clés à la fois en prenant les valeurs d'incrément de plusieurs lignes.
En résumé, pour que la génération automatique de clés fonctionne, il suffit de créer une table avec deux colonnes : une colonne de clé primaire servant de colonne d'identités, et une colonne réservée au stockage de la prochaine clé disponible. Cette table doit être initialisée avec un enregistrement dont la colonne d'identités contient la valeur 1 et dont la colonne d'incréments contient la première clé disponible. Ces conditions étant remplies, vous pouvez mettre en oeuvre la génération automatique de clés.