Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използвайте OBJECTPROPERTY(), за да разберете дали даден обект е ограничение CHECK в SQL Server

В SQL Server можете да използвате OBJECTPROPERTY() функция, за да разберете дали даден обект е CHECK ограничение.

Тази функция приема два параметъра:идентификатора на обекта и свойството, за което го проверявате.

Следователно можете да подадете идентификатора на обекта като първи аргумент и IsCheckCnst като второто и функцията ще върне или 1 или 0 в зависимост от това дали това е CHECK ограничение.

Връщана стойност на 1 означава, че е a CHECK ограничение и стойност 0 означава, че не е.

Пример 1 – Проверка на ограничение CHECK

Ето един бърз пример за демонстрация.

USE Test;
SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];

Резултат:

+---------------+
| IsCheckCnst   |
|---------------|
| 1             |
+---------------+

В този случай Тестът базата данни има обект с предоставения идентификатор и всъщност е CHECK ограничение.

Пример 2 – Получаване на идентификатора на обекта

Ако знаете името на обекта, но не и неговия идентификатор, можете да използвате OBJECT_ID() функция за извличане на идентификатора въз основа на неговото име.

Пример:

SELECT OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];

Резултат:

+---------------+
| IsCheckCnst   |
|---------------|
| 1             |
+---------------+

В този случай проверих същия обект от предишния пример.

Ето го отново с отделно извеждане на ID.

SELECT 
  OBJECT_ID('chkEndDate') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];

Резултат:

+-------------+---------------+
| Object ID   | IsCheckCnst   |
|-------------+---------------|
| 178099675   | 1             |
+-------------+---------------+

Пример 3 – Проверка на таблица (т.е. НЕ ПРОВЕРКА Ограничение)

Ето какво се случва, когато обектът не е CHECK ограничение.

SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];

Резултат:

+---------------+
| IsCheckCnst   |
|---------------|
| 0             |
+---------------+

В този случай базата данни прави всъщност имам обект с този идентификатор, но обектът всъщност е таблица, така че получавам отрицателен резултат.

Тук отново се използва OBJECT_ID() .

SELECT 
  OBJECT_ID('Individual') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];

Резултат:

+-------------+---------------+
| Object ID   | IsCheckCnst   |
|-------------+---------------|
| 18099105    | 0             |
+-------------+---------------+

Пример 4 – Обектът не съществува

SQL Server приема, че идентификаторът на обекта е в текущия контекст на базата данни. Ако подадете идентификатор на обект от друга база данни, или ще получите резултат NULL, или ще получите неправилни резултати.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject],
  OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];

Резултат:

+---------------------+------------+
| NonExistentObject   | 11111111   |
|---------------------+------------|
| NULL                | NULL       |
+---------------------+------------+

В този случай базата данни не съдържа обекти с това име или ID.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Върнете основния тип данни от стойност на SQL_Variant в SQL Server

  2. TSQL - Добавяне на колона към всички таблици в база данни [ Пример за курсор]

  3. Как да махна колона с ограничение?

  4. Изтриване на събития от регистрационния файл на базата данни в SQL Server (T-SQL)

  5. Нуждаете се от колона за дата и час в SQL Server, която автоматично се актуализира, когато записът бъде променен