{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.
Configuration: Windows XP
Firefox 3.5.2

6 réponses

  1. giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   146
     
    Bonsoir,

    insert ignore ... doit être la solution
    2
  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
  3. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   146
     
    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
  7. 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