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

MySQL réutilisera-t-il les identifiants supprimés lorsque l'incrémentation automatique est appliquée

InnoDB réinitialise le champ auto_increment lorsque vous redémarrez la base de données.

Lorsque InnoDB redémarre, il trouve la valeur la plus élevée dans la colonne, puis démarre à partir de là.

Cela ne se produira pas dans MyISAM car il met en cache le dernier identifiant incrémenté.

Mettre à jour

Cette fonctionnalité/bogue existe depuis 2003 et peut entraîner de graves problèmes. Prenons l'exemple ci-dessous,

  1. La table t1 a une clé primaire auto-inc.

  2. La table t2 a une colonne pour la clé primaire dans t1 sans "contrainte" de clé étrangère. En d'autres termes, lorsqu'une ligne est supprimée en t1, les lignes correspondantes en t2 sont orphelines.

  3. Comme nous le savons avec le redémarrage d'InnoDB, un identifiant peut être réédité. Par conséquent, les lignes orphelines dans t2 peuvent être faussement liées à de nouvelles lignes dans t1.