Comment faire pour réinitialiser AUTO_INCREMENT dans MySQL?
Comment puis-je réinitialiser la AUTO_INCREMENT
d'un champ? Je veux qu'il à commencer à compter à partir de 1
de nouveau.
- Vous pouvez obtenir une meilleure réponse sur le site pour les Administrateurs de base de données dans le dba.stackexchange.com
- Vous aurez probablement envie de vider la table trop:
TRUNCATE TABLE yourTableName;
- double possible de MySQL: Commande/Reset auto incrément de clé primaire?
- oui, l'instruction truncate table est le meilleur dans ce cas. il a également réinitialiser l'auto incrément de commencer à 1.
- Parfois, vous n'avez pas la permission de TRONQUER comme qui nécessite des autorisations DROP.
- Peu de nécro ici, mais vous ne pouvez pas tronquer une table qui a un parent-enfant, relation de clé étrangère lors de l'utilisation de InnoDB, pour ceux qui arrivent en retard.
- Faire
DELETE tablename
et puisALTER TABLE tablename AUTO_INCREMENT = 1
est plus rapide queTRUNCATE tablename
SET foreign_key_checks = 0
et vous pouvez- Essayez ceci:
DBCC CHECKIDENT('TableName', RESEED, 0)
- Je voudrais suggérer qu'il ne devrait pas d'importance à tout ce que votre auto-incrémentation des valeurs sont. Vous ne devriez pas être en s'appuyant sur leurs valeurs, ou de mettre de quelque importance sur eux.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez réinitialiser le compteur avec:
Pour InnoDB vous ne pouvez pas définir la
auto_increment
valeur inférieure ou égale à la plus actuelle de l'indice. (citation de ViralPatel):Voir Comment faire pour Réinitialiser un MySQL AutoIncrement à l'aide d'une valeur maximale à partir d'une autre table? sur la façon d'obtenir dynamiquement une valeur acceptable.
circular reference
curcular reference
?ALTER TABLE tablename AUTO_INCREMENT = 0
qui a le mieux fonctionné pour moi sinon le nouveau record a été ajouté avec l'id = 2.AUTO_INCREMENT
doit être en majuscules.Je pense que cela va le faire
UPDATE
sera mise à jour toutes les valeurs dansid
colonne.Simplement comme ceci:
référence: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
reset
moyens pour définir la valeur par défaut ... donc vous pouvez remplacer "valeur" par 1Il y a un moyen très facile avec phpmyadmin sous les "opérations" de l'onglet, vous pouvez définir, dans les options de la table, incrémentation automatique du numéro que vous souhaitez.
La meilleure solution qui a fonctionné pour moi:
Son rapide, fonctionne avec innoDB, et je n'ai pas besoin de connaître la valeur maximale actuelle!
De cette façon, l'auto incrémentation du compteur se réinitialise et qu'il démarre automatiquement à partir de la valeur maximale existe.
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
Il y a de bonnes options dans Comment Faire Pour Réinitialiser MySQL Colonne D'Auto-Incrémentation
Noter que
ALTER TABLE tablename AUTO_INCREMENT = value;
ne pas travail pour InnoDBMAX(id)+1
, en fait, de récupération supprimés id sur la fin. Exception à l'exception: MySQL 8.0 laisse les codes inutilisés.La cote la plus élevée de réponses à cette question toute recommander "ALTER yourtable AUTO_INCREMENT= valeur". Toutefois, cela ne fonctionne que lorsque
value
dans l'alter est plus grand que le courant max de la valeur de la colonne d'auto-incrémentation. Selon la base de données MySQL 8 documentation:En essence, vous ne pouvez modifier AUTO_INCREMENT pour augmenter la valeur de la colonne d'auto-incrémentation, pas à zéro à 1, comme l'OP demande dans la deuxième partie de la question. Pour les options qui vous permettent de définir le type AUTO_INCREMENT à la baisse de son courant max, jetez un oeil à Réorganiser /reset incrément automatique de la clé primaire.
L'ajout d'une mise à jour parce que la fonctionnalité a été modifiée dans MySQL 5.6. MySQL 5.6, vous POUVEZ utiliser une simple ALTER TABLE avec InnoDB:
Les documents seront mis à jour pour refléter ceci:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
Mon test montre également que la table n'est PAS copié, la valeur est simplement changé.
J'ai utilisé dans certains de mes scripts , le champ id est larguaient et ensuite ajoutée avec les réglages précédents , tous les champs existants dans la table de base de données sont remplis avec de nouvelles auto incrément des valeurs , cela devrait aussi fonctionner avec InnoDB .
Noter que tous les champs dans la table sera racontée et d'autres identifiants !!!.
Vous pouvez également utiliser la syntaxe
TRUNCATE
tableau comme ceci :TRUNCATE TABLE table_name
ATTENTION!!
TRUNCATE TABLE your_table
sera supprimer tout dans votreyour_table
!!TRUNCATE
également supprimer l'ENSEMBLE de vos lignes dans la table spécifiée!TRUNCATE
permet de réinitialiser leauto_increment
champs de trop? Mon cas d'utilisation est de supprimer le vieux des données dans un tableau et de commencer à l'Id de 1 à nouveau pour nouvelles données (imaginez, la compensation de la table pour une bonne utilisation à l'issue du test). Je pensais avoir àDROP
l'ensemble de la table etCREATE
de nouveau.c'est pour la table vide:
si vous avez des données, mais que vous souhaitez ranger, je vous conseille d'utiliser ce :
Voici ma solution, mais je vous conseille pas de le faire si votre colonne a des contraintes ou est connecté en tant que clé étrangère vers d'autres tables comme il aurait des effets négatifs ou ne sera même pas le travail.
> Premier : chute de la colonne
> Deuxième : recréer de la colonne et de la définir comme PREMIER si vous voulez que la première colonne, je présume.
Cela fonctionne bien!
J'ai essayé de modifier la table et set de type auto_increment à 1, mais cela n'a pas fonctionné. J'ai décidé de supprimer le nom de la colonne, j'ai été incrémentation, puis créer une nouvelle colonne avec votre choix de nom et de définir cette nouvelle colonne à l'augmentation de l'apparition.
Vous pouvez simplement couper la table pour réinitialiser la séquence
L'auto incrémentation du compteur d'une table peuvent être (re)définir de deux façons:
Par l'exécution d'une requête, comme d'autres l'ont déjà expliqué:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
À l'aide de l'atelier ou d'autres visuels de la base de données de l'outil de conception. Je vais montrer dans Workbench comment c'est fait - mais il ne devrait pas être très différente dans d'autres outil. Par clic droit sur la table désirée et en choisissant
Alter table
dans le menu contextuel. Sur le fond, vous pouvez voir toutes les options disponibles pour la modification d'un tableau. ChoisissezOptions
et vous obtiendrez ce formulaire:Ensuite il suffit de régler la valeur souhaitée dans le champ
Auto increment
comme indiqué dans l'image.Ce sera essentiellement exécuter la requête figurant dans la première option.
De MySQL 5.6 l'approche ci-dessous fonctionne plus rapidement en raison de en ligne DDL (note
algorithm=inplace
):alter table tablename auto_increment=1, algorithm=inplace;
De mise à jour plus récente, plus un id
ALTER TABLE nomtable AUTO_INCREMENT = 1
J'ai googlé et trouvé cette question, mais la réponse, je suis vraiment à la recherche d'répond à deux critères:
Puisque je ne pouvais pas trouver exactement ce que je veux, ici, j'ai bricolé de la réponse à partir de diverses réponses et de les partager ici.
Quelques choses à noter:
id
avec comme type deint
comme clé primaireÉtape 1: Créer Une Procédure Stockée
créer une procédure stockée comme ceci:
Puis l'exécuter.
Avant de l'exécuter, il ressemble à ceci lorsque vous regardez en vertu des Procédures Stockées dans votre base de données.
Quand je le lance, il me suffit de sélectionner la procédure stockée et appuyez sur Exécuter Sélection
Remarque: les délimiteurs sont cruciales. Ainsi, si vous copiez et collez du haut réponses sélectionnées dans cette question, ils ont tendance à ne pas travailler pour cette raison.
Après je ne, je devrais voir la procédure stockée
Si vous avez besoin de modifier la procédure stockée, vous devez supprimer la procédure stockée, puis sélectionnez exécuter à nouveau.
Étape 2: l'Appel de la procédure stockée
Ce temps, vous pouvez simplement utiliser des requêtes MySQL.
À l'origine de mes propres requêtes SQL notes dans https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc et adapté pour StackOverflow
Essayez D'Exécuter Cette Requête
Ou Essayez Cette Requête Pour La Réinitialisation Automatique De L'Incrément
Et Réglez Auto Incrément Puis Exécutez Cette Requête
Je vous suggère d'aller à la Requête du Navigateur et effectuer les opérations suivantes:
(Où N est un nombre de champ de type auto_increment.)
Auto_increment devez réinitialiser une fois que vous entrez une nouvelle ligne, int de la table.
Je ne sais pas ce qui se passera si vous essayez d'ajouter une ligne sur laquelle une valeur de champ de type auto_increment existent déjà.
Espérons que cette aide!
Meilleur moyen est de supprimer le champ avec de l'AI et de l'ajouter à nouveau avec l'IA, travaille pour toutes les tables