Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2011, 10h30   #1
Membre Expert
 
Avatar de zooffy
 
Homme Erick OZOUF
Développeur Web
Inscription : août 2004
Messages : 3 378
Détails du profil
Informations personnelles :
Nom : Homme Erick OZOUF
Âge : 42
Localisation : France, Morbihan (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2004
Messages : 3 378
Points : 1 330
Points : 1 330
Envoyer un message via MSN à zooffy Envoyer un message via Skype™ à zooffy
Par défaut Appliquer une contrainte unique sur une table existante

Bonjour à tous.

Je suis vraiment pas doué avec SQL server et là je butte sur nue truc que vous allez trouver fort simple : je veux ajouter une contrainte unique sur une colonne de ma table et je trouve pas comment faire.

Je suis sur un SQL Server 2005 Express et je vous donne le script de création de ma table en fin de message.

Je souhaiterais que ma colonne AdresseMail soit unique, c'est à dire que si j'essaie de saisir une adresse qui se trouve déjà dans la table j'ai un message d'erreur. Mais je veux garder le MailUserId comme clé primaire.

Je viens de farfouiller le net à la recherche d'une solution, j'ai touvé toutes les explications sympa, mais pas de procédure simple pour faire ça.

En fait, je n'ai jamais été trés doué pour manipuler les tables par Transact SQL, je fait tout par le Studio Management.

Vous pouvez m'aider ?


Code :
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
33
34
35
36
37
38
 
/****** Object:  Table [dbo].[PUB_BaseAdresse]    Script Date: 05/24/2011 10:28:12 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
SET ANSI_PADDING ON
GO
 
CREATE TABLE [dbo].[PUB_BaseAdresse](
	[MailUserId] [uniqueidentifier] NOT NULL,
	[AdresseMail] [varchar](200) NULL,
	[DateCreation] [datetime] NULL,
	[Activite] [varchar](5) NULL,
 CONSTRAINT [PK_PUB_BaseAdresse] PRIMARY KEY CLUSTERED 
(
	[MailUserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
 
SET ANSI_PADDING OFF
GO
 
ALTER TABLE [dbo].[PUB_BaseAdresse] ADD  CONSTRAINT [DF_Table_1_UserId]  DEFAULT (newid()) FOR [MailUserId]
GO
 
ALTER TABLE [dbo].[PUB_BaseAdresse] ADD  CONSTRAINT [DF_PUB_BaseAdresse_AdresseMail]  DEFAULT ('') FOR [AdresseMail]
GO
 
ALTER TABLE [dbo].[PUB_BaseAdresse] ADD  CONSTRAINT [DF_PUB_BaseAdresse_DateCreation]  DEFAULT (getdate()) FOR [DateCreation]
GO
 
ALTER TABLE [dbo].[PUB_BaseAdresse] ADD  CONSTRAINT [DF_PUB_BaseAdresse_Activite]  DEFAULT ('actif') FOR [Activite]
GO
__________________
Mon blog de création d'univers : Qualhiryann
Mon site qui parle de moi moi.ozouf.com
zooffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h49   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

voici le code pour la création de votre contrainte UNIQUE :

Code SQL :
1
2
3
4
 
ALTER TABLE [dbo].[PUB_BaseAdresse] 
ADD  CONSTRAINT [UK_PUB_BaseAdresse_AdresseMail]  UNIQUE (AdresseMail)
GO

bien sur, si vous avez déjà des données dans la table, il faut vous assurer que vous n'avez pas deux fois la même adresse mail, sinon la création de la contrainte unique échouera.
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h56   #3
Membre Expert
 
Avatar de zooffy
 
Homme Erick OZOUF
Développeur Web
Inscription : août 2004
Messages : 3 378
Détails du profil
Informations personnelles :
Nom : Homme Erick OZOUF
Âge : 42
Localisation : France, Morbihan (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2004
Messages : 3 378
Points : 1 330
Points : 1 330
Envoyer un message via MSN à zooffy Envoyer un message via Skype™ à zooffy
Merci beaucoup, ça me retire une sacrée épine du pied.

Bonne continuation.
__________________
Mon blog de création d'univers : Qualhiryann
Mon site qui parle de moi moi.ozouf.com
zooffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 15h28   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
Bonjour,

J'ai publié un billet à ce sujet, que l'on trouve par votre moteur de recherche préféré en tapant "SQL Server ajouter contrainte" (1er lien) ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h07.


 
 
 
 
Partenaires

Hébergement Web