{MySQL} Duplicate entry

Résolu/Fermé
orion999 Messages postés 23 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 5 janvier 2010 - 25 nov. 2009 à 15:17
P6R4N0 Messages postés 18 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 5 janvier 2016 - 11 mai 2010 à 16:29
Bonjour,

Voila j'effectue des requêtes d'insertion dans une table, dans cette table j'ai mis une clé UNIQUE sur l'un de mes champ.

Etant donné que lors d'un chargement d'une page je peux faire beaucoup d'insertions dans cette même table j'ai regrouper cette requête

INSERT INTO `ma_table` VALUES (...), (...), (...), ...

Le problème c'est que si une seul des valeurs insérée est déjà présente dans ma table... bah sa annule toute ma requête.

Y a t'il moyen d'inséré toute ses valeurs sans devoir faire une requête à chaque tour de boucle (ce qui serai évidement une perte de performance) ?

Merci d'avance.
Cordialement.
A voir également:

6 réponses

giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 nov. 2009 à 18:50
Bonsoir,

insert ignore ... doit être la solution
2
Black_Voltage Messages postés 76 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 16 mars 2015 1
25 nov. 2009 à 19:54
Bonjour,

Tu as le choix entre écrire :


INSERT INTO 'table' VALUES (...);
INSERT INTO 'table' VALUES (...);
INSERT INTO 'table' VALUES (...);
INSERT INTO 'table' VALUES (...);
...
-- En oubliant pas le ' ; ' à la fin de chaque requête



Ou bien faire comme tu l'as fait à la suite.

Pour éviter de recommencer à chaque erreur : fais un copier avant d'exécuter ;)
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
25 nov. 2009 à 23:56
Hello,

Enlever la clé primaire?

Puisque par définition, une clé primaire est un champ dont chaque donnée ne peut être identique à un autre.

Je vois pas le but d'insérer des données qui existent déjà dans une table, ta clé primaire devient alors inutile à moins que je ne saisisse pas le but de ta manoeuvre.
0
orion999 Messages postés 23 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 5 janvier 2010
26 nov. 2009 à 00:51
Je ne veux évidement pas entrer deux fois la même valeur... mais la requête pourrai vouloir ré-inséré une valeur déjà existante.

Cependant quelqu'un m'a donné la solution ;)

Citation: "Rajoute ON DUPLICATE KEY UPDATE id=id à la tout fin de ta requête"

Edit: La solution avec ignore est correcte également ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
26 nov. 2009 à 15:32
Bonjour pour modifier la valeur existante il faut d'abord vérifier que la ligne existe puis faire un update
ou alors un delete suivi d'un insert
mais jamais un insert tout seul
0
P6R4N0 Messages postés 18 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 5 janvier 2016 20
11 mai 2010 à 16:29
Pour ma part le fait de remplacer tous les mots clés "INSERT" par "REPLACE" à permis de résoudre mon problème :)
0