/ / MySQL: Incrémentation automatique moins un? - mysql, auto-incrémenté

MySQL: Incrémentation automatique moins un? - mysql, auto-increment

J'ai du code qui supprimera un post de la base de données:

mysql_query("DELETE FROM `posts` WHERE ID = "$id"");

Maintenant, je veux définir l'incrément automatique moins un pour suivre le poste supprimé. Est-ce possible? Si oui, comment puis-je le faire? Merci!

Réponses:

2 pour la réponse № 1

Vous ne voulez vraiment pas faire ça.

Imaginez ce qui se passe:

Une nouvelle publication est faite avec l'id 100 Une nouvelle publication est faite avec l'id 101 Une nouvelle publication est faite avec l'id 102 La publication 100 est supprimée ... votre compteur de publication est maintenant à 101 Une nouvelle publication est faite avec l'id 101

Alors maintenant, vous avez deux identifiants avec 101? Si vos contraintes vous le laissent faire, c’est mauvais. S'ils ne vous laissent pas faire, c’est impossible.

Quoi qu’il en soit, il vaut mieux laisser le "id 101" disparaître à tout jamais. C’est sûr de ne pas le rater, il reste encore quelques milliards de numéros à choisir ...


5 pour la réponse № 2

Vous pouvez définir manuellement le AUTO_INCREMENT value (http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html), mais c’est une mauvaise idée.

Tout d'abord, disons qu'il y a 5 posts. Si la publication portant l’ID 3 est supprimée, vous ne pouvez pas vraiment définir l’incrémentation automatique sur 3 car les ID 4 et 5 sont toujours utilisés.

Deuxièmement, s’il existe des références à cet ID dans une autre table qui n’ont pas été supprimées, ces références seront mauvaises si cet ID est réutilisé.

En général, les valeurs d'auto-incrémentation sont destinées à être utilisées une seule fois. Vous pouvez contourner cela si vous voulez, mais il n’ya vraiment aucune raison de le faire.


1 pour la réponse № 3

alter table yourtable auto_increment = 5

Peut-être qu'une sous-requête peut être utilisée pour obtenir le compte:

alter table yourtable auto_increment = (sélectionnez le nombre (*) dans votre table) + 1

Êtes-vous vraiment sûr que c'est ce que vous voulez faire? Rappelez-vous que cela va casser si vous supprimez une ligne "Au milieu" et non la dernière.