sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo devolver todas las restricciones CHECK deshabilitadas en SQL Server (ejemplo de T-SQL)

Si necesita devolver una lista de todos los CHECK restricciones que se han deshabilitado en una base de datos de SQL Server, puede ejecutar el código T-SQL a continuación.

Ejemplo 1:solo devolver restricciones CHECK deshabilitadas

Esta consulta devuelve solo el CHECK deshabilitado restricciones en la base de datos actual. Devuelve el nombre de la restricción, el nombre de la tabla a la que se aplica y la definición de la restricción.

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  definition
FROM sys.check_constraints
WHERE is_disabled = 1;

Resultado:

+----------------+-----------------+-------------------------------+
| Table          | Constraint      | definition                    |
|----------------+-----------------+-------------------------------|
| ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate])      |
| Occupation     | chkJobTitle     | ([JobTitle]<>'Digital Nomad') |
+----------------+-----------------+-------------------------------+

Esto consulta el sys.check_constraints vista del sistema. Sabemos que solo devuelve restricciones deshabilitadas porque WHERE cláusula especifica solo las filas que tienen el is_disabled columna establecida en 1 .

Si desea devolver todo habilitado CHECK restricciones, simplemente cambie el 1 a 0 .

Ejemplo 2:devolver todas las restricciones CHECK

La siguiente consulta devuelve todos CHECK restricciones para la base de datos actual (no solo las deshabilitadas). Esta vez devuelvo el is_disabled columna para demostrar de dónde obtuvo su valor la consulta anterior:

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  is_disabled, 
  is_not_trusted
FROM sys.check_constraints;

Resultado:

+----------------+-----------------+---------------+------------------+
| Table          | Constraint      | is_disabled   | is_not_trusted   |
|----------------+-----------------+---------------+------------------|
| ConstraintTest | chkPrice        | 0             | 0                |
| ConstraintTest | chkValidEndDate | 1             | 1                |
| ConstraintTest | chkTeamSize     | 0             | 0                |
| Occupation     | chkJobTitle     | 1             | 1                |
+----------------+-----------------+---------------+------------------+

También he incluido el is_not_trusted columna en esta consulta. Es prudente tener en cuenta este valor, ya que una restricción puede seguir sin ser de confianza incluso después de que se haya vuelto a habilitar. Para obtener una discusión detallada (y ejemplos) de este indicador, consulte Lo que debe saber sobre WITH NOCHECK al habilitar una restricción CHECK en SQL Server.