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

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

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

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

Връщана стойност на 1 означава, че е външен ключ и стойност 0 означава, че не е.

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

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

USE Music;
SELECT OBJECTPROPERTY(981578535, 'IsForeignKey') AS [IsForeignKey];

Резултат:

+----------------+
| IsForeignKey   |
|----------------|
| 1              |
+----------------+

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

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

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

Пример:

SELECT OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];

Резултат:

+----------------+
| IsForeignKey   |
|----------------|
| 1              |
+----------------+

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

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

SELECT 
  OBJECT_ID('FK_Albums_Artists') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];

Резултат:

+-------------+----------------+
| Object ID   | IsForeignKey   |
|-------------+----------------|
| 981578535   | 1              |
+-------------+----------------+

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

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

SELECT OBJECTPROPERTY(1525580473, 'IsForeignKey') AS [IsForeignKey];

Резултат:

+----------------+
| IsForeignKey   |
|----------------|
| 0              |
+----------------+

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

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

SELECT 
  OBJECT_ID('RockAlbums') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsForeignKey') AS [IsForeignKey],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];

Резултат:

+-------------+----------------+----------+
| Object ID   | IsForeignKey   | IsView   |
|-------------+----------------+----------|
| 1525580473  | 0              | 1        |
+-------------+----------------+----------+

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

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

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

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsForeignKey') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsForeignKey') 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 Server - SQL Server / TSQL Урок, част 86

  2. Стойностите на колоната за идентичност на SQL сървъра започват от 0 вместо от 1

  3. RADIANS() Примери в SQL Server

  4. Основи и използване на NOLOCK намек в SQL Server

  5. Как да използвате функцията IDENTITY() в SQL Server