Puede usar el siguiente código para deshabilitar todos los CHECK
y restricciones de clave externa para una tabla específica en SQL Server.
Simplemente reemplace TableName
con el nombre de la tabla aplicable.
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
A continuación se muestra un ejemplo en el que hago esto y luego compruebo el resultado.
Ejemplo 1:revisar las restricciones
Primero, echaré un vistazo rápido al CHECK
actual y restricciones de clave externa en la base de datos, para ver si están habilitadas o deshabilitadas.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Resultado:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 0 | 0 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Así que actualmente hay cuatro CHECK
restricciones en la base de datos, tres de las cuales son para ConstraintTest
mesa.
Podemos ver que todas las restricciones están habilitadas porque is_disabled se establece en 0 .
Ejemplo 2:deshabilitar las restricciones
Ahora deshabilitaré todas las restricciones para ConstraintTest
tabla:
ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;
Ejemplo 3:comprobar el resultado
Ahora ejecuto la misma consulta del primer ejemplo para ver el resultado.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Resultado:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 1 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 1 | 1 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Como era de esperar, las tres restricciones para ConstraintTest han sido deshabilitadas (porque is_disabled la columna se establece en 1 para esas restricciones).
Tenga en cuenta que is_not_trusted la columna también se establece en 1 . Esta es una consideración importante, especialmente si tiene la intención de volver a habilitar cualquiera de sus restricciones deshabilitadas.
Consulte Lo que debe saber sobre WITH NOCHECK al habilitar una restricción CHECK en SQL Server para obtener información sobre cómo restaurar la confianza al volver a habilitar sus restricciones. La información de ese artículo también se aplica a las claves externas.
Deshabilitar las restricciones individualmente
Si no desea deshabilitar todas las restricciones en la tabla, puede deshabilitarlas individualmente. Consulte Cómo deshabilitar una restricción CHECK en SQL Server y Cómo deshabilitar una clave externa en SQL Server.
Vuelva a habilitar las restricciones
Si necesita volver a habilitar todas las restricciones para una tabla, consulte Cómo habilitar ALL CHECK y restricciones de clave externa para una tabla.
Si necesita volver a habilitarlos individualmente, consulte Cómo habilitar una restricción CHECK en SQL Server y Cómo habilitar una clave externa en SQL Server.