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

  1. #1
    Membre régulier
    Interdire la duplication d'un enregistrement dans une table qui ne doit pas posséder des clés primaires
    Bonjour,

    Ma question est simple:

    Comment je peux interdire la duplication d'un enregistrement dans une table qui ne doit pas posséder des clés primaires (par ce que ses champs peuvent avoir des valeurs nulles) sous SQL SERVER 2008 ??

    Merci d'avance.

  2. #2
    Membre éprouvé
    il semble y avoir un problème de conception mais bon...
    Tu peux ajouter un index unique.
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  3. #3
    Membre régulier
    Citation Envoyé par darkelend Voir le message
    il semble y avoir un problème de conception mais bon...
    En fait je gère les chauffeurs et les receveurs, ces derniers travaillent dans des brigades, une brigade contient en générale un chauffeurs et un receveurs, mais il existe des cas ou elle contient un chauffeur sans receveur ou le contraire.

    C'est pour cela que j'ai créé une table:

    Affectation Brigade(MatriculeChauffeur, MatriculeReceveurs, NumeroBrigade)

    Et comme MatriculeChauffeur et MatriculeReceveurs peuvent etre null alors je ne peut pas affecter une clé à cette table.

    Merci d'avance

  4. #4
    Nouveau membre du Club
    Tu peux te faire un index multiple avec unicité

    Si la ligne MatriculeChauffeur, MatriculeReceveurs, NumeroBrigade ne peut apparaitres qu'une fois, crée un index multiple sur ces 3 colonnes.

    Un index multiple avec un colonne autorisant le NULL ne permettera pas de respecter la contrainte d'unicité.

    Pour contourner le problème, tu peux mettre la colonne a NOT_NULL et utiliser une valeur par défaut (VIDE par ex) et l'unicité fonctionnera.

    remarques :
    -les champs de BDD ne devraient pas être en camelCase
    - Privilègie l'anglais

  5. #5
    Rédacteur

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    CREATE UNIQUE INDEX XXX ON "Affectation Brigade" (MatriculeChauffeur, MatriculeReceveurs, NumeroBrigade)
    WHERE MatriculeChauffeur IS NOT NULL OR MatriculeChauffeur IS NOT NULL OR NumeroBrigade IS NOT NULL;


    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.