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

Auto-incrémentation de MySQL sur une clé non primaire

J'ai dû faire face à un problème similaire en ordonnant une arborescence de catégories de manière non naturelle. Si vous insérez toutes les lignes d'un identifiant à la fois, vous pouvez faire quelque chose comme ceci pour chaque sous-ID :

SET @seq = 0;
INSERT INTO test
  (id,  subId,            text) VALUES
  (_id, @seq := @seq + 1, 'Some text')
;

Si vous avez besoin "d'ajouter" une ligne à un identifiant, vous pouvez définir @seq avec

SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;

Cela nécessiterait bien sûr une gestion des id par l'application et non mySQL.

Vous pouvez faire la même chose que le dernier bloc de code pour obtenir également le prochain identifiant disponible.