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

Проверете дали дадена таблица има външен ключ в SQL Server с OBJECTPROPERTY()

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

За да направите това, предайте идентификатора на обекта на таблицата като първи аргумент и TableHasForeignKey като втори аргумент. Функцията връща 1 или 0 в зависимост от това дали има ограничение за външен ключ.

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

Ако искате действителен списък на външните ключове, вижте Списък на всички външни ключове в таблица в SQL Server.

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

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

USE WideWorldImportersDW;
SELECT OBJECTPROPERTY(1493580359, 'TableHasForeignKey') AS [TableHasForeignKey];

Резултат:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| 1                    |
+----------------------+

В този случай WideWorldImportersDW базата данни има таблица с предоставения идентификатор и има ограничение за външен ключ.

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

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

Пример:

SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Order'), 'TableHasForeignKey') AS [TableHasForeignKey];

Резултат:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| 1                    |
+----------------------+

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

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

SELECT 
  OBJECT_ID('Fact.Order') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Fact.Order'), 'TableHasForeignKey') AS [TableHasForeignKey];

Резултат:

+-------------+----------------------+
| Object ID   | TableHasForeignKey   |
|-------------+----------------------|
| 1493580359  | 1                    |
+-------------+----------------------+

Пример 3 – Когато таблицата НЯМА външен ключ

Ето какво се случва, когато таблицата няма външен ключ.

SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignKey') AS [TableHasForeignKey];

Резултат:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| 0                    |
+----------------------+

В този случай обектът е таблица, просто няма външен ключ.

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

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

SELECT OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasForeignKey') AS [TableHasForeignKey];

Резултат:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| NULL                 |
+----------------------+

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

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

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasForeignKey') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'TableHasForeignKey') AS [12345678];

Резултат:

+-----------------+------------+
| InvalidObject   | 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 сървъра:низови или двоични данни ще бъдат съкратени

  2. Изхвърлете всички таблици, чиито имена започват с определен низ

  3. 5 бързи полезни съвети за SQL Server Производствени администраторите на бази данни

  4. Инсталирайте Azure Data Studio на Ubuntu 18.04

  5. Как да напиша UTF-8 знаци с помощта на групово вмъкване в SQL Server?