Existe-t-il un moyen de spécifier, par exemple, 4 valeurs distinctes pour une colonne varchar dans MS SQL Server 2008?
Par exemple, j'ai besoin d'une colonne appelée Frequency (varchar) qui n'accepte que les valeurs possibles "Daily", "Weekly", "Monthly", "Yearly"
Est-ce possible de définir dans SQL Server Management Studio lors de la création de la table?
sql
sql-server-2008
ssms
Adam
la source
la source
Réponses:
Avez-vous déjà envisagé d'ajouter un
check constraint
sur cette colonne qui limiterait les valeurs? Quelque chose comme:la source
Frequency varchar(200)
Vous voulez une contrainte de vérification .
Vous voulez quelque chose comme:
Vous pouvez également implémenter des contraintes de vérification avec des fonctions scalaires, comme décrit dans le lien ci-dessus, ce que je préfère faire.
la source
Personnellement, je le coderais comme tinyint et:
Les raisons:
Il faudra en moyenne 8 octets pour stocker le texte, 1 octet pour tinyint. Sur des millions de lignes, cela fera la différence.
Et la collation? «Daily» est-il le même que «DAILY»? Il faut des ressources pour faire ce genre de comparaison.
Enfin, que se passe-t-il si vous souhaitez ajouter "Toutes les deux semaines" ou "Toutes les heures"? Cela nécessite un changement de schéma lorsque vous pouvez simplement ajouter de nouvelles lignes à une table de recherche.
la source
Lorsque vous éditez une table
Clic droit -> Vérifier les contraintes -> Ajouter -> Tapez quelque chose comme
Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
dans le champ d'expression et un bon nom de contrainte dans le champ (Nom).Vous avez terminé.
la source