{MySQL} Duplicate entry

Résolu
orion999 Messages postés 23 Statut Membre -  
P6R4N0 Messages postés 20 Statut Membre -
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 1952 Statut Membre 142
 
Bonsoir,

insert ignore ... doit être la solution
2
Black_Voltage Messages postés 82 Statut Membre 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 10414 Statut Contributeur 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 Statut Membre
 
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 1952 Statut Membre 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 20 Statut Membre 20
 
Pour ma part le fait de remplacer tous les mots clés "INSERT" par "REPLACE" à permis de résoudre mon problème :)
0