¿Hay alguna manera de especificar, por ejemplo, 4 valores distintos para una columna varchar en MS SQL Server 2008?
Por ejemplo, necesito una columna llamada Frecuencia (varchar) que solo acepte 'Diariamente', 'Semanal', 'Mensual', 'Anual' como valores posibles
¿Es posible establecer esto dentro de SQL Server Management Studio al crear la tabla?
sql
sql-server-2008
ssms
Adán
fuente
fuente
Respuestas:
¿Ya consideró agregar un
check constraint
en esa columna que restringiría los valores? Algo como:fuente
Frequency varchar(200)
Quieres una restricción de verificación .
Quieres algo como:
También puede implementar restricciones de verificación con funciones escalares, como se describe en el enlace anterior, que es como prefiero hacerlo.
fuente
Personalmente, lo codificaría como tinyint y:
Razones:
Se necesitarán en promedio 8 bytes para almacenar texto, 1 byte para tinyint. En millones de filas, esto marcará la diferencia.
¿Qué pasa con la colación? ¿Es "Diario" lo mismo que "DIARIO"? Se necesitan recursos para hacer este tipo de comparación.
Por último, ¿qué sucede si desea agregar "Quincenal" o "Cada hora"? Esto requiere un cambio de esquema cuando puede agregar nuevas filas a una tabla de búsqueda.
fuente
Cuando esté editando una tabla,
haga clic con el botón derecho -> Comprobar restricciones -> Agregar -> Escriba algo como
Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
en el campo de expresión y un buen nombre de restricción en el campo (Nombre).Estás listo.
fuente