Pregunta

He escrito la siguiente restricción para una columna que he llamado 'grado':

CONSTRAINT gradeRule CHECK grade IN (‘easy’, ‘moderate’, ‘difficult’),

¿Es posible actualizar más tarde, el gradeRule tener valores diferentes? Por ejemplo, 'moderado' y 'difíciles' se podría cambiar a 'medio' y 'duro'.

Gracias

¿Fue útil?

Solución

Se puede quitar la restricción existente y añadir la nueva restricción con la opción NOCHECK. Esto permitirá añadir la restricción a pesar de que los datos de la tabla viola la restricción. El problema de hacer esto, sin embargo podría ser que usted no sería capaz de actualizar los registros existentes sin hacer pasar la restricción en primer lugar.

ALTER TABLE SomeTable DROP CONSTRAINT gradeRule
GO
ALTER TABLE SomeTable ADD CONSTRAINT gradeRule ... WITH NOCHECK
GO

A pesar de que esto es posible, no es por lo general se recomienda debido a los problemas potenciales con las futuras actualizaciones de los datos.

Otros consejos

quitar la restricción, y luego añadir la restricción de reemplazo. No se puede actualizar una restricción en SQL Server al menos.

ALTER TABLE SomeTable DROP CONSTRAINT gradeRule

Además, tendrá que actualizar los datos de la tabla antes de añadir la nueva restricción, por lo que cumple con la nueva restricción.

Si cambia la restricción, todos los datos almacenados actualmente en la tabla deben cumplir con la restricción. Así que si había 2 filas de datos con 'moderado' y trató de cambiar la restricción de fácil, medio y difícil, sería no le dejaron.

Por lo que tendría que hacer la nueva restricción (fácil, moderado, medio, difícil, duro) o, actualizar los datos a los nuevos valores moderados - -.> Medio, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top