Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj OBJECTPROPERTY(), aby dowiedzieć się, czy obiekt jest ograniczeniem CHECK w SQL Server

W SQL Server możesz użyć OBJECTPROPERTY() funkcja, aby dowiedzieć się, czy obiekt jest CHECK ograniczenie.

Ta funkcja akceptuje dwa parametry:identyfikator obiektu i właściwość, dla której ją sprawdzasz.

Dlatego możesz przekazać identyfikator obiektu jako pierwszy argument, a IsCheckCnst jako drugi, a funkcja zwróci albo 1 lub 0 w zależności od tego, czy jest to CHECK ograniczenie.

Zwracana wartość 1 oznacza, że ​​jest CHECK ograniczenie i wartość 0 oznacza, że ​​tak nie jest.

Przykład 1 – Sprawdzanie ograniczenia CHECK

Oto krótki przykład do zademonstrowania.

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

Wynik:

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

W takim przypadku Test baza danych zawiera obiekt o podanym identyfikatorze, a w rzeczywistości jest to CHECK ograniczenie.

Przykład 2 – Uzyskanie identyfikatora obiektu

Jeśli znasz nazwę obiektu, ale nie znasz jego identyfikatora, możesz użyć OBJECT_ID() funkcja do pobrania identyfikatora na podstawie jego nazwy.

Przykład:

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

Wynik:

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

W tym przypadku sprawdziłem ten sam obiekt z poprzedniego przykładu.

Tutaj znowu jest z wyjściem ID osobno.

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

Wynik:

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

Przykład 3 – Sprawdzanie tabeli (tj. NIE Ograniczenie SPRAWDŹ)

Oto, co się dzieje, gdy obiekt nie jest CHECK ograniczenie.

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

Wynik:

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

W takim przypadku baza danych tak w rzeczywistości mam obiekt o tym identyfikatorze, ale obiekt jest w rzeczywistości tabelą, więc otrzymuję wynik ujemny.

Tutaj znowu używamy OBJECT_ID() .

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

Wynik:

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

Przykład 4 – Obiekt nie istnieje

SQL Server zakłada, że ​​identyfikator obiektu znajduje się w bieżącym kontekście bazy danych. Jeśli przekażesz identyfikator obiektu z innej bazy danych, otrzymasz wynik NULL lub otrzymasz nieprawidłowe wyniki.

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

Wynik:

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

W takim przypadku baza danych nie zawiera obiektów o tej nazwie lub identyfikatorze.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień separator na przecinek podczas wysyłania wyników zapytania pocztą e-mail w programie SQL Server (T-SQL)

  2. Znajdowanie zduplikowanych wierszy w SQL Server

  3. Wszystko, co powinieneś wiedzieć o SQL Server JOINS

  4. Jak grupować według ciągłych zakresów?

  5. Uzyskiwanie i instalacja Microsoft SQL Server Management Studio