{MySQL} Duplicate entry

Résolu
orion999 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
P6R4N0 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
Bonsoir,

insert ignore ... doit être la solution
2
Black_Voltage Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   1 293
 
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   Statut Membre Dernière intervention  
 
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 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
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   Statut Membre Dernière intervention   20
 
Pour ma part le fait de remplacer tous les mots clés "INSERT" par "REPLACE" à permis de résoudre mon problème :)
0