211 votes

MySQL, supprimer toutes les lignes de la table et réinitialiser Id à zéro

Salut les gars j’ai besoin de supprimer toutes les lignes de la table, mais lorsque j’ajoute de nouvelle ligne, je veux primaire clé-Id, qui a à incrémentation automatique, repartir de 0 respectivement à partir de 1.

346voto

Francois B. Points 4065

ne pas supprimer, utilisez truncate :

http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html:

« Le gestionnaire de tables ne rappelle pas la dernière valeur AUTO_INCREMENT utilisée, mais commence à compter depuis le début. Cela est vrai même pour les tables MyISAM et InnoDB, qui normalement ne pas réutiliser les valeurs de la séquence. »

100voto

a_horse_with_no_name Points 100769

Si vous ne pouvez pas utiliser `` (par ex. en raison de contraintes de clé étrangère), vous pouvez utiliser une table alter après avoir supprimé toutes les lignes pour redémarrer l’auto_increment :

8voto

Sorin Points 11

Un fait intéressant.

J’étais sûr que TRUNCATE sera toujours plus performants, mais dans mon cas, pour une base de données avec environ 30 tables avec des clés étrangères, remplis avec uniquement quelques lignes, il a fallu environ 12 secondes pour tronquer toutes les tables, par opposition à seulement quelques centaines de millisecondes pour supprimer les lignes. Réglage de l’incrémentation automatique ajoute environ une seconde en total, mais il est encore beaucoup mieux.

Alors je dirais essayer les deux, voir qui fonctionne plus rapidement pour votre cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X