IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Couple unique sur 2 champs


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 71
    Par défaut Couple unique sur 2 champs
    Bonjour,

    J'aimerai créer une table qui contient des couples ecarte les couple d'info dejà existants

    ex : ( soit chp1 le premier champs et chp2 le second champ de la table )

    chp1 : aaa
    chp2 : bbb
    Ok la ligne est insérée

    puis

    chp1 : aaa
    chp2 : ccc
    Ok la ligne est insérée meme si chp1 contient déja "aaa" car chp2 lui est différent (leur association n'existe pas encore dans la table)

    mais

    chp1 : aaa
    chp2 : bbb
    le couple des champs chp1 et chp2 existe déjà donc l'insertion n'est pas effectuée

    Merci d'avance

  2. #2
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Pour cela tu peux définir ton couple (champ_1, champ_2) comme clé primaire et utiliser l'option on duplicate key update de la fonction insert.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 71
    Par défaut
    Très bien merci pour ta rapidité

    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on duplicate key update
    sert à updater une valeur existante non ?

    Comment pourrais-je faire dans ce cas pour n'opérer aucune modif si le couple existe ?

    et comment spécifier que je travail sur 2 champs unique ( couple )



    exemple ici je ne trouve pas où spécifier les 2 clés uniques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
        -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

    J'espere ne pas etre trop lourd mais c'est tous nouveau pour moi sa !

    :-)

    Merci d'avance

  4. #4
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Si tu utilises cette fonction, tes colonnes champ_1, champ_2 doivent obligatoirement être la clé primaire. Si tu ne peux pas les définir comme tel il faut trouver une autre solution.

    Avec cette option, tu commandes quels champs mettre à jour, je ne sais pas si tu peux pas trouver une astuce pour n'en mettre aucun à jour.... il faut tester

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/10/2014, 19h25
  2. Index unique sur 3 champs
    Par pol2095 dans le forum Administration
    Réponses: 1
    Dernier message: 25/07/2014, 08h26
  3. Condition UNIQUE sur plusieurs champs
    Par knolz dans le forum SQL
    Réponses: 4
    Dernier message: 31/01/2013, 04h06
  4. Requête sur deux champs couplée à un DISTINCT ?
    Par phil59500 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/01/2010, 22h47
  5. liste unique sur plusieurs champs
    Par nicolas.poulain dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/01/2009, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo