Crear y modificar restricciones CHECK

Al crear una tabla puede crear una restricción CHECK como parte de la definición de la tabla. Si ya existe una tabla, puede agregar una restricción CHECK. Las tablas y las columnas pueden contener varias restricciones CHECK.

Si ya existe una restricción CHECK, puede modificarla o eliminarla. Por ejemplo, puede que desee modificar la expresión utilizada por la restricción CHECK en una columna de la tabla.

Nota

Para modificar una restricción CHECK, antes deberá eliminar la restricción CHECK existente y, a continuación, volver a crearla con la nueva definición.

El siguiente ejemplo de Transact-SQL crea una nueva tabla y la modifica agregando una restricción CHECK a la columna CreditRating.

IF OBJECT_ID ('dbo.Vendors', 'U') IS NOT NULL
DROP TABLE dbo.Vendors;
GO
CREATE TABLE dbo.Vendors 
    (VendorID int PRIMARY KEY, VendorName nvarchar (50), 
    CreditRating tinyint)
GO
ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRating
    CHECK (CreditRating >= 1 AND CreditRating <= 5)

Elimine una restricción CHECK para quitar las limitaciones acerca de los valores aceptables para las columnas incluidas en la expresión de la restricción.

Para crear una restricción CHECK durante la creación de una tabla

Para crear una restricción CHECK en una tabla existente

Para eliminar una restricción CHECK

Exigir una restricción CHECK mediante WITH NOCHECK

Cuando se agrega una restricción CHECK a una tabla ya existente, la restricción puede aplicarse sólo a los nuevos datos o a los datos existentes. De forma predeterminada, la restricción CHECK se aplica a los datos existentes y a los nuevos datos. Utilice la opción WITH NOCHECK de la instrucción ALTER TABLE para aplicar la nueva restricción sólo a los datos recién agregados. Esta opción resulta de utilidad cuando los datos existentes ya cumplen la nueva restricción CHECK o cuando una regla de empresa requiere que se exija la restricción sólo a partir de ese punto.

Por ejemplo, una restricción anterior podría requerir que los códigos postales se limitaran a cinco cifras, mientras que una nueva restricción requiere que los códigos postales sean de nueve cifras. Los datos antiguos con códigos postales de cinco cifras siguen siendo válidos y coexisten con los nuevos datos que contienen códigos postales de nueve cifras. Por lo tanto, la nueva restricción sólo debe comprobarse con los datos nuevos.

No obstante, conviene actuar con precaución cuando se agrega una restricción sin comprobar los datos existentes ya que, de ese modo, se omiten los controles de Motor de base de datos que exigen las reglas de integridad de la tabla.

Para evitar la comprobación de datos existentes durante la creación de una restricción CHECK

Deshabilitar restricciones CHECK

Puede deshabilitar las restricciones CHECK para operaciones específicas, como las operaciones INSERT, las operaciones UPDATE y el proceso de replicación.

  • Instrucciones INSERT y UPDATE

    Al deshabilitar una restricción CHECK se habilita la modificación de los datos de la tabla sin ser validados por las restricciones. Deshabilite una restricción CHECK durante las instrucciones INSERT y UPDATE si los nuevos datos no cumplen la restricción o si la restricción debe aplicarse únicamente a los datos que ya se encuentren en la base de datos.

  • Procesamiento de replicaciones

    Deshabilite una restricción CHECK durante la replicación si la restricción es específica para la base de datos de origen. Cuando se replica una tabla, la definición de la tabla y los datos se copian de la base de datos de origen a una base de datos de destino. Estas dos bases de datos suelen estar, aunque no necesariamente, en servidores diferentes. Si las restricciones CHECK específicas para la base de datos de origen no están deshabilitadas, puede que impidan innecesariamente que se escriban datos nuevos en la base de datos de destino. Para obtener más información, vea Controlar restricciones, identidades y desencadenadores con NOT FOR REPLICATION.

Para deshabilitar una restricción CHECK para las instrucciones INSERT y UPDATE

Para deshabilitar una restricción CHECK para la replicación

Para obtener información acerca de las restricciones CHECK

Vea también

Conceptos