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

Insérez l'entier positif unique le plus bas possible de manière atomique dans MySql

Je ne le ferais pas utilisez ceci pour remplir les identifiants "manquants", mais cela devrait fonctionner :

Insert Into t (id)
  Select Coalesce( Min(t.id) + 1, 0 )
  From t
  Left Join t As t2 On ( t2.id = t.id + 1 )
  Where t2.id Is Null

Obtenir tous les id s où id + 1 n'existe pas (Left Join ), et insérez Min(id)+1 ou 0 si non disponible.