126 votes

Équivalent SQL Server au type de données MySQL enum?

SQL Server 2008 a-t-il un type de données tel que enum MySQL?

148voto

chaos Points 69029

Ce n'est pas. Il y a un vague équivalent:

 mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
 

86voto

user1431422 Points 221

La meilleure solution que j'ai trouvée consiste à créer une table de recherche avec les valeurs possibles en tant que clé primaire et à créer une clé étrangère pour la table de recherche.

5voto

HDevejian Points 59

pour 3 bits de données 2 ^ 3 pouvant être stockés dans moins d'un octet de données, il n'a pas de sens de déclarer une valeur de varchar de 10 pour chaque élément de la base de données.

Une approche rationalisée consisterait à inclure une implémentation numérique tinyint (2 ^ 8) avec une configuration de type énumération basée sur des indicateurs dans le code.

4voto

Jony Adamit Points 636

IMHO Tables de consultation est la voie à suivre, avec une intégrité référentielle. Mais uniquement si vous évitez les "nombres magiques diaboliques" en suivant un exemple tel que celui-ci: Générer une énumération à partir d'une table de consultation de base de données à l'aide de T4

S'amuser!

2voto

Dimitris Staikos Points 116
 CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 0
END

GO

CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 1
END

-- etc...
 

Là où la performance compte, utilisez toujours les valeurs absolues.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X