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

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

107
demandé sur T.J. Crowder 2009-09-16 21:13:26

5 réponses

Ce n'est pas le cas. il y a un équivalent vague:

mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
122
répondu chaos 2009-09-16 17:19:25

La meilleure solution que j'ai trouvé c'est de créer une table avec les valeurs possibles comme clé primaire, et de créer une clé étrangère vers la table de recherche.

71
répondu user1431422 2012-06-21 12:53:33

IMHO lookup tables est la voie à suivre, avec l'intégrité référentielle. Mais seulement si vous évitez les "nombres magiques maléfiques" en suivant un exemple comme celui-ci: générer enum à partir d'une table de recherche de base de données en utilisant T4

Amusez-Vous!

3
répondu Jony Adamit 2012-08-01 12:36:54
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 0
END

GO

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

-- etc...

Lorsque les performances sont importantes, Utilisez toujours les valeurs dures.

2
répondu Dimitris Staikos 2012-02-23 22:28:08

Trouvé cette approche intéressante quand je voulais implémenter enums dans SQL Server.

L'approche mentionnée ci-dessous dans le lien est assez convaincante, considérant que tous vos besoins enum de base de données pourraient être satisfaits avec 2 tables centrales.

Http://blog.sqlauthority.com/2010/03/22/sql-server-enumerations-in-relational-database-best-practice/

1
répondu user_v 2013-08-27 08:16:54