Bonjour,
Sur une table donnée, je dois faire en sorte qu'une valeur n'existe qu'une seule fois par ligne.
Est ce qu'il est possible d'arriver à ce résultat à l'aide d'une contrainte ?
Merci pour votre aide,
![]()
Bonjour,
Sur une table donnée, je dois faire en sorte qu'une valeur n'existe qu'une seule fois par ligne.
Est ce qu'il est possible d'arriver à ce résultat à l'aide d'une contrainte ?
Merci pour votre aide,
![]()
Bonsoir,
Oui en implémentant une contrainte d'unicité sur l'ensemble des colonnes concernées
Exemple :
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE dbo.table ( ID INT NOT NULL, ID2 INT NOT NULL CONSTRAINT u_test_unique UNIQUE (ID,ID2) )
Bonjour,
Je ne suis pas sûr que c'est ce que cherche b_lob.
Si nous ajoutons une contrainte d'unicité, cela nous garantit que la même tuple ne sera stocké qu'une seule fois dans la table.
En revanche si c'est une valeur doit être stockée par exemple dans une colonne parmi 4 et que les autres doivent être à NULL, on peut le vérifier à l'aide d'une contrainte de domaine.
Suppons que nous avons des exclusivités mais que celles-ci ne sont valables que pour un trimestre de l'année.
Nous aurions une table dont la spécification de la structure serait :
Et pour vérifier que l'exclusivité n'est appliquée que pour un et un seul trimestre de l'année, nous ajouterions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE TbExclusivite ( IDExclusivite INT NOT NULL IDENTITY CONSTRAINT PK_TbExclusivite PRIMARY KEY, nomExclusivite VARCHAR(20) NOT NULL CONSTRAINT UQ_TbExclusivite_nomExclusivite UNIQUE, estPremierTrimestre BIT NOT NULL, estSecondTrimestre BIT NOT NULL, estTroisiemeTrimestre BIT NOT NULL, estQuatriemeTrimestre BIT NOT NULL, )
@++
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32 ALTER TABLE dbo.TbExclusivite ADD CONSTRAINT CHK_TbExclusivite_estPremierTrimestre_estSecondTrimestre_estTroisiemeTrimestre_estQuatriemeTrimestre CHECK ( ( estPremierTrimestre = 1 AND estSecondTrimestre = 0 AND estTroisiemeTrimestre = 0 AND estQuatriemeTrimestre = 0 ) OR ( estPremierTrimestre = 0 AND estSecondTrimestre = 1 AND estTroisiemeTrimestre = 0 AND estQuatriemeTrimestre = 0 ) OR ( estPremierTrimestre = 0 AND estSecondTrimestre = 0 AND estTroisiemeTrimestre = 1 AND estQuatriemeTrimestre = 0 ) OR ( estPremierTrimestre = 0 AND estSecondTrimestre = 0 AND estTroisiemeTrimestre = 0 AND estQuatriemeTrimestre = 1 ) )![]()
Bonjour,
Merci pour la pertinence de vos réponses !
Il est en effet plus approprié pour moi d'utiliser la solution proposée par elsuket.
Certaines des combinaisons de valeurs notamment nulle ne devant pas exister
et du fait qu'il est possible d'avoir plusieurs fois les mêmes valeurs dans le même ordre. (les mêmes lignes)
![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager