En SQL Server puede usar OBJECTPROPERTY() función para averiguar si un objeto es o no un CHECK restricción.
Esta función acepta dos parámetros:el ID del objeto y la propiedad por la que lo está comprobando.
Por lo tanto, puede pasar el ID del objeto como primer argumento y IsCheckCnst como el segundo, y la función devolverá un 1 o un 0 dependiendo de si es o no un CHECK restricción.
Un valor de retorno de 1 significa que es un CHECK restricción y un valor de 0 significa que no lo es.
Ejemplo 1:Comprobación de una restricción CHECK
Aquí hay un ejemplo rápido para demostrarlo.
USE Test; SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];
Resultado:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
En este caso, la Prueba la base de datos tiene un objeto con la ID proporcionada, y de hecho es un CHECK restricción.
Ejemplo 2:obtener el ID del objeto
Si conoce el nombre del objeto, pero no su ID, puede usar el OBJECT_ID() función para recuperar el ID basado en su nombre.
Ejemplo:
SELECT OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Resultado:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
En este caso verifiqué el mismo objeto del ejemplo anterior.
Aquí está de nuevo con la salida de ID por separado.
SELECT
OBJECT_ID('chkEndDate') AS [Object ID],
OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Resultado:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 178099675 | 1 | +-------------+---------------+
Ejemplo 3:Comprobación de una tabla (es decir, NO es una restricción CHECK)
Esto es lo que sucede cuando el objeto no es un CHECK restricción.
SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];
Resultado:
+---------------+ | IsCheckCnst | |---------------| | 0 | +---------------+
En este caso, la base de datos sí de hecho, tengo un objeto con esa ID, pero el objeto es en realidad una tabla, por lo que obtengo un resultado negativo.
Aquí está nuevamente usando OBJECT_ID() .
SELECT
OBJECT_ID('Individual') AS [Object ID],
OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];
Resultado:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 18099105 | 0 | +-------------+---------------+
Ejemplo 4:el objeto no existe
SQL Server asume que el ID del objeto está en el contexto de la base de datos actual. Si pasa un ID de objeto de una base de datos diferente, obtendrá un resultado NULO o obtendrá resultados incorrectos.
SELECT
OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject],
OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];
Resultado:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
En este caso, la base de datos no contiene objetos con ese nombre o ID.