puisqu'il est auto-increment c'est non par définition
Si c'est possible, cf message de
Mazarini
et avec insert ... set id = 0; ou set id= NULL;
même combat, même résultat.
Cet exemple n'est pas signifiant dans le sens où comme ces valeurs ne sont pas des id valides et correspondent (pour un id) à null, c'est la valeur par défaut qui est insérée et donc l'auto incrément fonctionne normalement...
Mazarini a raison, tu peux très bien fixer l'auto incrément toi-même à des valeurs inférieures à la valeur maximale en cours, tant que l'id n'est pas déjà utilisé (même s'il a été utilisé puis effacé). On peut donc considérer l'auto incrément simplement comme une fonction qui donne une valeur par défaut.
Pour répondre à
rickphp, on pourrait donc éviter les trous dans les id en recherchant la plus petite valeur non utilisée (qui a été supprimée) mais ce serait fastidieux et c'est bien s'embêter pour rien car le temps que tu dépasse la valeur maximale avec un "int", ton application sera aux oubliettes depuis longtemps.
Sinon pour info ce comportement n'est pas identique pour toutes les tables :
Si vous effacez des lignes contenant la valeur maximum d'une colonne AUTO_INCREMENT, la valeur sera réutilisée pour une table ISAM ou BDB, mais pas pour une table MyISAM ou InnoDB.
source
Le plus simple est donc de suivre les conseils de
moogli : "int" avec le "unsigned" puisque de toutes façons on utilise pas les valeurs négatives, mais ne mets un "bigint" que vraiment si nécessaire sinon cela prend inutilement de la place dans ta table (de même que si tu utilise un champ longtext alors qu'un champ texte suffirait). Tu pourras toujours changer pour un "bigint" si le besoin s'en fait sentir un jour.