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

 MySQL Discussion :

Combinaison de key unique -interdire les doublons-


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut Combinaison de key unique -interdire les doublons-
    Salut,

    J'ai encore besoin de votre aide.

    J'ai une table où je sauvegarde une configuration de checkbox en fonction de deux attributs.

    Enfin bref ! Voilà ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CREATE TABLE IF NOT EXISTS `conf_erpcatrub` (
      `IdRub` int(11) NOT NULL,
      `IdCateg` int(11) NOT NULL,
      KEY `IdRub` (`IdRub`),
      KEY `IdCateg` (`IdCateg`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    --
    -- Contenu de la table `conf_erpcatrub`
    --
     
    INSERT INTO `conf_erpcatrub` (`IdRub`, `IdCateg`) VALUES
    (3, 1),
    (3, 2),
    (3, 3),
    (3, 4),
    (3, 5);
    J'aimerais savoir s'il est possible de restreindre les doublons, lors d'une insertion.
    De dire qu'une seule combinaison est possible.

    Dans mon exemple nous ne pourrions pas rajouté un nouveau 3, 3.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu n'as pas spécifié de clé primaire pour ta table. Définis là avec le couple (IdRub, IdCateg). Et supprime l'index sur IdRub devenu inutile.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    En effet j'ai oublié un truc dans ma structure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    --
    -- Contraintes pour la table `conf_erpcatrub`
    --
    ALTER TABLE `conf_erpcatrub`
      ADD CONSTRAINT `conf_erpcatrub_ibfk_1` FOREIGN KEY (`IdRub`) REFERENCES `rubrique_erp` (`IdRub`),
      ADD CONSTRAINT `conf_erpcatrub_ibfk_2` FOREIGN KEY (`IdCateg`) REFERENCES `categorie_erp` (`IdCateg`);
    Voilà la raison des Key

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce qui ne t'empêche nullement de générer ta clé primaire sur le couple de colonnes puis de supprimer l'index devenu inutile sur la première colonne de cette clé primaire.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Ok ! J'obtiens donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
     
    CREATE TABLE IF NOT EXISTS `conf_erpcatrub` (
      `IdRub` int(11) NOT NULL,
      `IdCateg` int(11) NOT NULL,
      PRIMARY KEY (`IdRub`,`IdCateg`),
      KEY `IdCateg` (`IdCateg`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    INSERT INTO `conf_erpcatrub` (`IdRub`, `IdCateg`) VALUES
    (1, 1),
    (1, 2),
    (1, 3),
    (1, 4);
     
     
    ALTER TABLE `conf_erpcatrub`
      ADD CONSTRAINT `conf_erpcatrub_ibfk_1` FOREIGN KEY (`IdRub`) REFERENCES `rubrique_erp` (`IdRub`),
      ADD CONSTRAINT `conf_erpcatrub_ibfk_2` FOREIGN KEY (`IdCateg`) REFERENCES `categorie_erp` (`IdCateg`);
    Merci CinePhil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interdire les doublons dans une requête
    Par Gorane dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 06/11/2011, 13h32
  2. Interdire les doublons dans un sous-formulaire
    Par Gorane dans le forum IHM
    Réponses: 6
    Dernier message: 14/10/2011, 00h15
  3. Réponses: 7
    Dernier message: 28/10/2010, 12h45
  4. Récupéré les doublons uniquement???
    Par hoaxpunk dans le forum Oracle
    Réponses: 6
    Dernier message: 12/04/2006, 16h19
  5. Rendre les doublons uniques ?
    Par ggnore dans le forum Linux
    Réponses: 4
    Dernier message: 12/10/2004, 16h52

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