Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

data type pour 2 choix

2 réponses
Avatar
Fred
Bonjour,
Suis en train de créer une table avec une colonne "eServiceName". Dans cette
table je ne peux avoir que 2 choix: soit "microsoft" soit "belgacom". Pour ce
faire, quel genre de datatype puis-je choisir (sql server 2008) ?
Merci d'avance,

2 réponses

Avatar
EmanuelL
Salut Fred,

CREATE TABLE [dbo].[Test](
[No_Ligne] [int] IDENTITY(1,1) NOT NULL,
[eServiceName] [varchar](20) NOT NULL
CONSTRAINT [PK_No_Ligne]
PRIMARY KEY CLUSTERED(No_Ligne ASC)
CHECK ([eServiceName] IN ('Belgacom', 'Microsoft')));

Une autre solution serait de créer une table ServiceName et de mettre
les 2 lignes, ensuite dans la table Test tu ajoutes sa clef primaire
comme clef étrangère, voir exemple ci-dessous.

CREATE TABLE [dbo].[eService](
[eService_Id] [int] IDENTITY(1,1) NOT NULL,
[eServiceName] [varchar](20) NOT NULL
CONSTRAINT [PK_eService_Id]
PRIMARY KEY CLUSTERED(eService_Id ASC));
GO

INSERT INTO [dbo].[eService]([eServiceName])
VALUES('Belgacom')
GO

INSERT INTO [dbo].[eService]([eServiceName])
VALUES('Microsoft')
GO


CREATE TABLE [dbo].[Test](
[No_Ligne] [int] IDENTITY(1,1) NOT NULL,
[eService_Id] [int] NOT NULL
CONSTRAINT [PK_No_Ligne]
PRIMARY KEY CLUSTERED(No_Ligne ASC));
GO

ALTER TABLE [dbo].[Test]
WITH CHECK ADD CONSTRAINT [FK_Test_eService_Id_ESTE]
FOREIGN KEY([eService_Id])
REFERENCES [dbo].[eService] ([eService_Id]);
GO

ALTER TABLE [dbo].[Test]
CHECK CONSTRAINT [FK_Test_eService_Id_ESTE];
GO

A+ ;-)



Fred avait soumis l'idée :
Bonjour,
Suis en train de créer une table avec une colonne "eServiceName". Dans cette
table je ne peux avoir que 2 choix: soit "microsoft" soit "belgacom". Pour ce
faire, quel genre de datatype puis-je choisir (sql server 2008) ?
Merci d'avance,



--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Fred
Parfait, merci bcp !

"EmanuelL" a écrit :

Salut Fred,

CREATE TABLE [dbo].[Test](
[No_Ligne] [int] IDENTITY(1,1) NOT NULL,
[eServiceName] [varchar](20) NOT NULL
CONSTRAINT [PK_No_Ligne]
PRIMARY KEY CLUSTERED(No_Ligne ASC)
CHECK ([eServiceName] IN ('Belgacom', 'Microsoft')));

Une autre solution serait de créer une table ServiceName et de mettre
les 2 lignes, ensuite dans la table Test tu ajoutes sa clef primaire
comme clef étrangère, voir exemple ci-dessous.

CREATE TABLE [dbo].[eService](
[eService_Id] [int] IDENTITY(1,1) NOT NULL,
[eServiceName] [varchar](20) NOT NULL
CONSTRAINT [PK_eService_Id]
PRIMARY KEY CLUSTERED(eService_Id ASC));
GO

INSERT INTO [dbo].[eService]([eServiceName])
VALUES('Belgacom')
GO

INSERT INTO [dbo].[eService]([eServiceName])
VALUES('Microsoft')
GO


CREATE TABLE [dbo].[Test](
[No_Ligne] [int] IDENTITY(1,1) NOT NULL,
[eService_Id] [int] NOT NULL
CONSTRAINT [PK_No_Ligne]
PRIMARY KEY CLUSTERED(No_Ligne ASC));
GO

ALTER TABLE [dbo].[Test]
WITH CHECK ADD CONSTRAINT [FK_Test_eService_Id_ESTE]
FOREIGN KEY([eService_Id])
REFERENCES [dbo].[eService] ([eService_Id]);
GO

ALTER TABLE [dbo].[Test]
CHECK CONSTRAINT [FK_Test_eService_Id_ESTE];
GO

A+ ;-)



Fred avait soumis l'idée :
> Bonjour,
> Suis en train de créer une table avec une colonne "eServiceName". Dans cette
> table je ne peux avoir que 2 choix: soit "microsoft" soit "belgacom". Pour ce
> faire, quel genre de datatype puis-je choisir (sql server 2008) ?
> Merci d'avance,

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org