Salut Nicryc.

Envoyé par
al1_24
Problème déjà maintes fois soulevé dans ces forums.
Remarque tout à fait exacte ! Mais qui a une porté très limitée pour le résultat final.

Envoyé par
Nicryc
Lorsque j'ajoute une ligne l'id est automatique incrémenté à 7, ça fait un trou du coup.
Si ce sont les trous qui vous dérange, alors n'utilisez pas l'auto incrément, gérez le par vous-même.
Mais se substituer à l'auto incrément qui fonctionne parfaitement, je ne voie pas trop l'intérêt.

Envoyé par
Nicryc
Mais même quand la table est vide il y a pas moyen de refaire reprendre l'incrémentation à 0 ?
L'incrémentation ne commence pas à zéro, mais à 1.
Une solution consiste à rechercher la plus grande valeur de votre identifiant, avant de l'insérer dans la table.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| -- ===================
-- Trigger `increment`
-- ===================
DROP TRIGGER IF EXISTS `incrementer`;
DELIMITER $$
CREATE TRIGGER `incrementer`
BEFORE INSERT ON `test`
FOR EACH ROW BEGIN
SET NEW.id=ifnull((select max(id)+1 from test),1);
END$$
DELIMITER ; |
Ceci prend bien plus de temps que de passer par l'auto incrément, qui je le rappelle fonctionne parfaitement sous MySql.
Sinon, de temps en temps, vous pouvez vous permettre de renuméroter vos lignes :
update `test`, (select @x:=0) as x set id = (@x:=@x+1);
@+
Partager