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

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

Можете да използвате OBJECTPROPERTY() функция в SQL Server, за да видите дали дадена таблица има или не ограничение ПО ПОДРАЗБИРАНЕ.

За да направите това, предайте идентификатора на обекта на таблицата като първи аргумент и TableHasDefaultCnst като втори аргумент. Функцията връща 1 или 0 в зависимост от това дали има или не ограничение ПО ПОДРАЗБИРАНЕ.

Връщана стойност на 1 означава, че таблицата има ограничение по подразбиране и стойност 0 означава, че не е.

Пример 1 – Основна употреба

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

ИЗПОЛЗВАЙТЕ WideWorldImportersDW;ИЗБЕРЕТЕ OBJECTPROPERTY(1141579105, 'TableHasDefaultCnst') КАТО [TableHasDefaultCnst];

Резултат:

<пред>+-----------------------+| TableHasDefaultCnst ||-----------------------|| 1 |+-----------------------+

В този случай WideWorldImportersDW базата данни има таблица с предоставения идентификатор и има ограничение ПО ПОДРАЗБИРАНЕ.

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

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

Пример:

ИЗБЕРЕТЕ OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') КАТО [TableHasDefaultCnst];

Резултат:

<пред>+-----------------------+| TableHasDefaultCnst ||-----------------------|| 1 |+-----------------------+

Това е същият обект от предишния пример.

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

ИЗБЕРЕТЕ OBJECT_ID('Dimension.City') КАТО [ИД на обект], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') КАТО [TableHasDefaultCnst];

Резултат:

+------------+-----------------------+| ID на обекта | TableHasDefaultCnst ||------------+-----------------------|| 1013578649 | 1 |+------------+-----------------------+

Пример 3 – Когато таблицата НЯМА ограничение ПО ПОДРАЗБИРАНЕ

Ето какво се случва, когато таблицата няма ограничение ПО ПОДРАЗБИРАНЕ.

ИЗБЕРЕТЕ OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') КАТО [TableHasDefaultCnst];

Резултат:

<пред>+-----------------------+| TableHasDefaultCnst ||-----------------------|| 0 |+-----------------------+

В този случай обектът е таблица, просто няма ограничение ПО ПОДРАЗБИРАНЕ.

Пример 4 – Когато обектът не е таблица

Ето какво се случва, когато базата данни съдържа обект с идентификатор, но този обект не е таблица.

ИЗБЕРЕТЕ OBJECTPROPERTY( OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasDefaultCnst') КАТО [TableHasDefaultCnst];

Резултат:

<пред>+-----------------------+| TableHasDefaultCnst ||-----------------------|| NULL |+-----------------------+

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

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

ИЗБЕРЕТЕ OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasDefaultCnst') КАТО [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') КАТО [12345678];

Резултат:

+-----------------+-----------+| Невалиден обект | 12345678 ||----------------+------------|| NULL | NULL |+-----------------+-----------+

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

Освен това ще получите NULL при грешка или ако нямате разрешение да видите обекта.


  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 Server 2014 Инкрементална статистика

  2. Как работи функцията RIGHT() в SQL Server (T-SQL)

  3. Конкатениране на стойностите на редове T-SQL

  4. Как да конфигурирате поща на база данни в SQL Server

  5. Импортирайте 'xml' в Sql сървър