[SQL Server] Contraintes d'unicité...
Résolu
Olivier
-
Philippe je sais ou tu te cache !!! -
Philippe je sais ou tu te cache !!! -
Bonjour à tous,
J'ai un petit problème en ce qui concerne une base de données et ses règles.
Dans une table produit, je désirerais qu'un groupe de valeurs soit unique, mais, en langange SQL, je ne vois pas comment faire...
Explication :
Table MaTable1
-ID : entier, clé.
-Val1 : entier, Référence MaTable2
-Val2 : entier, Référence MaTable3
-Val3 : entier
-Val4 : entier, Référence MaTable4
Que la clé soit unique, cela ne pose pas de problème.
Mais je voudrais établir une règle afin qu'à la création d'un nouvel enregistrement, le triple {Val1, Val2, Val4} soit unique.
Par exemple, imaginons lesINSERT suivants :
ID Val1 Val2 Val3 Val4
1 1 1 1 1 OK
2 1 2 1 1 OK
3 1 1 3 1 Erreur ! {1,1,1} existe déjà.
Comment faire-je cela ? Un Create Rule ??
Merci d'avance.
J'ai un petit problème en ce qui concerne une base de données et ses règles.
Dans une table produit, je désirerais qu'un groupe de valeurs soit unique, mais, en langange SQL, je ne vois pas comment faire...
Explication :
Table MaTable1
-ID : entier, clé.
-Val1 : entier, Référence MaTable2
-Val2 : entier, Référence MaTable3
-Val3 : entier
-Val4 : entier, Référence MaTable4
Que la clé soit unique, cela ne pose pas de problème.
Mais je voudrais établir une règle afin qu'à la création d'un nouvel enregistrement, le triple {Val1, Val2, Val4} soit unique.
Par exemple, imaginons lesINSERT suivants :
ID Val1 Val2 Val3 Val4
1 1 1 1 1 OK
2 1 2 1 1 OK
3 1 1 3 1 Erreur ! {1,1,1} existe déjà.
Comment faire-je cela ? Un Create Rule ??
Merci d'avance.
A voir également:
- [SQL Server] Contraintes d'unicité...
- Cybera server - Télécharger - Divers Réseau & Wi-Fi
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Filezilla server - Télécharger - Téléchargement & Transfert
- Mysql community server - Télécharger - Bases de données
- Typsoft ftp server - Télécharger - Téléchargement & Transfert
4 réponses
Bonjour,
[dbo].[MaTable1] a remplacer par le nom de ma table en brut ?
[MaContrainteUnique] pareil pour un nom de contrainte que l'on donne soit meme ?
[val1] valeur brute aussi ? (sans crochets)
alors dans mon cas ça donnerai ça ?
nom de ma contraite CONSTRAINT
nom de ma table UTILISATEUR
nom de ma colonne LOGIN
Mais, si c'est bien ça, quand je fais ça il me met "erreur lors de la validation de la contraite..." et blablabla.. arf
quelqu'un peut m'aider svp ?
Merci
ALTER TABLE [dbo].[MaTable1] WITH NOCHECK ADD CONSTRAINT [MaContrainteUnique] UNIQUE ( [val1], [val2], [val4] )
[dbo].[MaTable1] a remplacer par le nom de ma table en brut ?
[MaContrainteUnique] pareil pour un nom de contrainte que l'on donne soit meme ?
[val1] valeur brute aussi ? (sans crochets)
alors dans mon cas ça donnerai ça ?
ALTER TABLE utilisateur WITH NOCHECK ADD CONSTRAINT constraint UNIQUE ( login )
nom de ma contraite CONSTRAINT
nom de ma table UTILISATEUR
nom de ma colonne LOGIN
Mais, si c'est bien ça, quand je fais ça il me met "erreur lors de la validation de la contraite..." et blablabla.. arf
quelqu'un peut m'aider svp ?
Merci
ALTER TABLE [dbo].[MaTable1] WITH NOCHECK ADD CONSTRAINT [MaContrainteUnique] UNIQUE ( [val1], [val2], [val4] )
Même si ça fait longtemps je tiens à donner la réponse à sa dernière question:
Il s'agit certainement d'une erreur à cause du nom de sa contrainte, n'utiliser pas "constraint" (confusion de Mysql) mais par exemple "my_constraint" et ça passera tout seul ;)
PS: Je ne vois pas vraiment l'utilité du "WITH NOCHECK" par contre :-°
Il s'agit certainement d'une erreur à cause du nom de sa contrainte, n'utiliser pas "constraint" (confusion de Mysql) mais par exemple "my_constraint" et ça passera tout seul ;)
PS: Je ne vois pas vraiment l'utilité du "WITH NOCHECK" par contre :-°