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?
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'))
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.
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!
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.
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.