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

Développement SQL Server Discussion :

Interdire la duplication d'un enregistrement dans une table qui ne doit pas posséder des clés primaires


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Femme Profil pro
    Inscrit en
    Mai 2008
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 167
    Points : 88
    Points
    88
    Par défaut 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é
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    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
    Femme Profil pro
    Inscrit en
    Mai 2008
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    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
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 22
    Points : 38
    Points
    38
    Par défaut
    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

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    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 +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/12/2007, 15h20
  2. duplication d'enregistrements dans une table temporaire
    Par nawac dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2007, 16h53
  3. Réponses: 2
    Dernier message: 06/02/2007, 09h17
  4. lien pour une table qui ne doit pas etre public
    Par raslain dans le forum Oracle
    Réponses: 1
    Dernier message: 12/12/2005, 13h40
  5. AJOUT d'un ENREGISTREMENT dans UNE TABLE
    Par ramo dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/08/2005, 16h24

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