Précédent   Forum du club des développeurs et IT Pro > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/12/2012, 16h09   #1
eemii
Membre du Club
 
Femme Turquoise Rose
Inscription : mai 2008
Messages : 153
Détails du profil
Informations personnelles :
Nom : Femme Turquoise Rose

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

Informations forums :
Inscription : mai 2008
Messages : 153
Points : 47
Points : 47
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.
eemii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 16h46   #2
darkelend
Membre confirmé
 
Inscription : août 2009
Messages : 207
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 207
Points : 265
Points : 265
il semble y avoir un problème de conception mais bon...
Tu peux ajouter un index unique.
__________________
http://www.kankuru.fr/blog.aspx
darkelend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 17h27   #3
eemii
Membre du Club
 
Femme Turquoise Rose
Inscription : mai 2008
Messages : 153
Détails du profil
Informations personnelles :
Nom : Femme Turquoise Rose

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

Informations forums :
Inscription : mai 2008
Messages : 153
Points : 47
Points : 47
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
eemii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 11h41   #4
Susp3nded
Nouveau Membre du Club
 
Femme
Ingénieur développement logiciels
Inscription : 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 : 32
Points : 32
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
Susp3nded est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 11h56   #5
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 080
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 080
Points : 21 678
Points : 21 678
Code :
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h27.


 
 
 
 
Partenaires

Hébergement Web