Réinitialiser un auto incrément en SQL
Résolu
Ptesoleil
Messages postés
27
Statut
Membre
-
#gknx -
#gknx -
Bonjour,
Je doit remplir une base de données avec des données d'un fichier excel (via perl).
J'ai une table E définit comme suivant : EnzymeID (Primary Key - autoincrement)
EC (varchar)
NameE (varchar)
Family (varchar)
Nbgene (varchar -defaut null)
Cette table comporte des doublons que j'ai supprimé à l'aide d'une table intermédiaire, j'ai ensuite supprimé les enregistrements de ma table E et renvoyé les données sans doublons de ma table intermédiaire à ma table E. Mon probleme est que maintenant l'auto increment (clé primaire) n'est plus respecté! Cela me donne 1, 2, 5, 6, 9... dans ma table principale E. Peut t-on réinitialiser ce champ? et si oui comment? (avec une requete sql?)
Je doit remplir une base de données avec des données d'un fichier excel (via perl).
J'ai une table E définit comme suivant : EnzymeID (Primary Key - autoincrement)
EC (varchar)
NameE (varchar)
Family (varchar)
Nbgene (varchar -defaut null)
Cette table comporte des doublons que j'ai supprimé à l'aide d'une table intermédiaire, j'ai ensuite supprimé les enregistrements de ma table E et renvoyé les données sans doublons de ma table intermédiaire à ma table E. Mon probleme est que maintenant l'auto increment (clé primaire) n'est plus respecté! Cela me donne 1, 2, 5, 6, 9... dans ma table principale E. Peut t-on réinitialiser ce champ? et si oui comment? (avec une requete sql?)
Configuration: Windows XP Internet Explorer 6.0
7 réponses
-
Bonjour,
il est vrai que le poste est vieux de plus de trois ou quartes mois mais c'est pour les autres que je poste la solution exacte est la plus simple pour résoudre ce problème et la voici :
Il suffisait de mettre cette raquette sql : ALTER TABLE latable AUTO_INCREMENT=0 -
Merci pixeltn. Exactement ce que je recherchais.
Super aussi ta "RAQUETTE" SQL. M.D.R.
Amicalement,
zebulon -
je passe un peu tard...
Code :
DoCmd.RunSQL "ALTER TABLE matable ALTER COLUMN indice COUNTER(base,pas)"avec par ex: base=1 et pas=1 -
Sinon pour remettre l'AUTO_INCREMENT à la valeur max de l'id :
ALTER TABLE latable AUTO_INCREMENT = (SELECT MAX(id)+1 FROM latable);
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
Une solution serait de supprimer et recréer la table (avec sauvegarde dans une table temporaire) et ensuite d'effectuer des insert de la table de sauvegarde vers la nouvelle table mais sans alimenter la colonne en autoincrement.
-
Merci pour ta réponse aussi rapide.
Je créé dejà une table temporaire pour supprimer les doublons : voici mon code (sous perl!)
my $R_1 = $dbh -> do ("CREATE TABLE Copie SELECT DISTINCT EC,NameE,Family,Nbgene FROM enzyme GROUP BY EC,NameE");
my $R_2 = $dbh -> do ("DELETE FROM enzyme");
my $R_3 = $dbh -> do ("INSERT INTO enzyme SELECT * FROM Copie");
my $R_4 = $dbh -> do ("DROP TABLE Copie");
mais j'ai le message d'erreur suivant (et il ne me remplit pas la table) : "dbd::mysql::db do failed: column coun't doesn't match value count at row 1" -
-
-
-
Désolé pour le delais,
Normal, il faut aussi renseigner que tu ne veux pas alimenter ta première colonne dans l'ordre INSERT donc tu dois lister les colonnes de ta table d'accueil mais sans mettre la première colonne.
INSERT (EC,NameE,Family,Nbgene) INTO enzyme VALUES (SELECT EC,NameE,Family,Nbgene FROM Copie)"
-
-
Merci beaucoup 'pixeltn' pour votre réponse elle m'a beaucoup aidée.
-
J'arrive également très tard... mais comme chez moi ceci n'a pas fonctionné, voici ma méthode:
- Supprimer le champ ID
- insérer un champ ID avec A_I et index : PRIMARY