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

Requêtes MySQL Discussion :

Clé primaire sur 2 champs


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 46
    Points
    46
    Par défaut Clé primaire sur 2 champs
    Bonjour,

    Je souhaite avoir une unicité dans ma table entres les champs x & y
    Je ne veux pas qu'on puisse trouver les mêmes couples de valeurs sur les champs x,y:
    1,1,2 et
    2,2,1 -> Interdit !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    +----------+------+------+------+ 
    | cle_prim | x    | y    |     | 
    +----------+------+------+------+ 
    |        1 |    1 |    2 |     | 
    |        2 |    2 |    1 |     | 
    +----------+------+------+------+
    Comment déclarer un tel index ?

    D'avance merci

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Bonjour,

    C'est certainement possible sur d'autre SGBD, mais c'est impossible dans DDL de création de la table avec MySQL. Il n'y a même pas de contrainte CHECK...

    Il faut passer par un Trigger Before Insert.
    Ou alors effectuer le travail au moment de l'insertion, comme ceci:
    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 t1 (
      a integer PRIMARY KEY,
      b integer,
      c integer,
      constraint uk_bc UNIQUE (b, c)
    );
    insert into t1 values (1, 1, 2);
    -- première ligne pour test
    insert into t1 
      select 2, 2, 1
      from (select 1) AS td -- simule la table dual d'Oracle
      where (2, 1) not in (
        select b, c from t1
        union
        select c, b from t1
      );
    -- Aucune ligne insérée, 
    -- le couple {2, 1} est déjà présent dans la table

Discussions similaires

  1. delete avec une clé primaire sur 3 champs
    Par meloo dans le forum Requêtes
    Réponses: 5
    Dernier message: 20/10/2008, 12h49
  2. [MPD] Clé primaire sur plusieurs champs
    Par vimanas dans le forum Schéma
    Réponses: 21
    Dernier message: 24/09/2008, 19h43
  3. Clé primaire sur un champ texte vs NuméroAutomatique
    Par Prekestolen dans le forum Modélisation
    Réponses: 3
    Dernier message: 08/07/2008, 14h17
  4. Réponses: 2
    Dernier message: 02/04/2008, 19h05
  5. Clé primaire sur deux champs
    Par Tsuna78 dans le forum Access
    Réponses: 1
    Dernier message: 12/03/2007, 19h40

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