Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - valeur de décrémentation automatique

Vous ne devriez pas faire cela.
Ne prenez pas un identifiant unique auto-incrémenté sous la forme d'un nombre ordinal.
Le mot "unique" signifie que l'identifiant doit être collé à sa ligne pour toujours .

Il n'y a aucun lien entre ces nombres et l'énumération.
Imaginez que vous souhaitiez sélectionner des enregistrements par ordre alphabétique. Où iraient vos précieux chiffres ? Une base de données n'est pas comme une liste ordonnée, comme vous le pensez probablement. Ce n'est pas un fichier plat avec des lignes stockées dans un ordre prédéfini. Il a une idéologie totalement différente. Les lignes de la base de données n'ont pas d'ordre. Et ne sera commandé qu'à l'heure sélectionnée, s'il a été explicitement défini par ORDER BY clause.
De plus, une base de données est censée faire une recherche pour vous. Vous pouvez donc dire qu'avec des lignes filtrées ou un ordre différent, ce nombre d'auto-incrémentation n'aura absolument rien à voir avec les positions réelles des lignes.

Si vous souhaitez énumérer la sortie, c'est le travail d'une couche de présentation. Ajoutez simplement un compteur côté PHP.

Et encore :ces numéros censés identifier un certain record. Si vous modifiez ce numéro, vous ne retrouverez plus jamais votre dossier.

Prenez ce site même par exemple. Stack Overflow identifie ses questions avec un tel numéro :

Alors, imaginez que vous ayez enregistré cette adresse de page dans un signet. Maintenant, Jeff arrive et renumérote toute la base de données. Vous appuyez sur votre signet et atterrissez sur l'autre question. Tout le site deviendrait un terrible gâchis.

N'oubliez pas :Renuméroter des identifiants uniques est mal !