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

Administration MySQL Discussion :

Index unique a sens unique !


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    dwown
    Invité(e)
    Par défaut Index unique a sens unique !
    Bonjour,

    J'ai une table qui contient deux champs (int), j'aimerais avoir une contrainte d'unicité pour etre sûr de ne pas avoir de doublons. Cependant mysql me retourne un duplicate key alors que pour moi ca ne l'est pas.

    Mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // le user id 221 appartient au magasin id 215
    INSERT INTO ma_table VALUES (221 , 215)
    est différent de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // le user id 215 appartient au magasin id 221
    INSERT INTO ma_table VALUES (215 , 221)
    Note : Il faut savoir que le premier champs est l'id de mon user et le second champs l'id de son magasin.

    Il est vrai sert assez rare d'avoir des id de user et de magsins aussi proche (en valeur) mais ca arrive. Et je ne peux pas changer ces id.

    merci
    Dernière modification par Deepin ; 22/04/2009 à 09h31. Motif: Merci d'utiliser les balises [code] (bouton '#') de l'éditeur !!!

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Comment est déclaré cet index ? Quelle est la structure de la table ?

  3. #3
    dwown
    Invité(e)
    Par défaut
    Voila la structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE `PERSONNEL_MAGASIN` (
      `PERSONNEL_ID` int(4) NOT NULL,
      `MAGASIN_ID` int(10) unsigned NOT NULL,
      PRIMARY KEY  (`MAGASIN_ID`,`PERSONNEL_ID`),
      KEY `PERSONNEL_ID` (`PERSONNEL_ID`),
      KEY `MAGASIN_ID` (`MAGASIN_ID`),
      CONSTRAINT `PERSONNEL_MAGASIN_fk2` FOREIGN KEY (`PERSONNEL_ID`) REFERENCES `PERSONNELS` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
      CONSTRAINT `PERSONNEL_MAGASIN_fk3` FOREIGN KEY (`MAGASIN_ID`) REFERENCES `MAGASINS` (`MAGASIN_ID`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

    Pour les index :


  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    J'arrive un peu après la bataille...

    Que donne un CHECK TABLE ? Parfois un index corrompu peut créer quelques surprises.

    Stéphane

Discussions similaires

  1. SQL Server 2008 - index unique ou non unique ?
    Par drouhne dans le forum Administration
    Réponses: 3
    Dernier message: 12/10/2010, 15h45
  2. Index implicite sur contrainte UNIQUE ?
    Par CinePhil dans le forum Débuter
    Réponses: 1
    Dernier message: 17/10/2009, 16h22
  3. Communication à sens unique sur port série
    Par ViveLesQuads dans le forum Windows XP
    Réponses: 3
    Dernier message: 15/12/2007, 17h58
  4. probleme réseau : ping a sens unique
    Par be_on_edge dans le forum Développement
    Réponses: 14
    Dernier message: 18/09/2004, 10h01

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