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

Sprawdź, czy tabela ma DEFAULT ograniczenie w SQL Server za pomocą OBJECTPROPERTY()

Możesz użyć OBJECTPROPERTY() funkcji w programie SQL Server, aby sprawdzić, czy tabela ma ograniczenie DOMYŚLNE.

Aby to zrobić, przekaż identyfikator obiektu tabeli jako pierwszy argument, a TableHasDefaultCnst jako drugi argument. Funkcja zwraca 1 lub 0 w zależności od tego, czy ma ograniczenie DOMYŚLNE.

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

Przykład 1 – Podstawowe użycie

Oto krótki przykład do zademonstrowania.

USE WideWorldImportersDW;
SELECT OBJECTPROPERTY(1141579105, 'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Wynik:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 1                     |
+-----------------------+

W tym przypadku WideWorldImportersDW baza danych zawiera tabelę z podanym identyfikatorem i ma ograniczenie DOMYŚLNE.

Przykład 2 – Uzyskanie identyfikatora obiektu

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

Przykład:

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

Wynik:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 1                     |
+-----------------------+

Jest to ten sam obiekt z poprzedniego przykładu.

Tutaj znowu jest z wyjściem ID oddzielnie.

SELECT 
  OBJECT_ID('Dimension.City') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Wynik:

+-------------+-----------------------+
| Object ID   | TableHasDefaultCnst   |
|-------------+-----------------------|
| 1013578649  | 1                     |
+-------------+-----------------------+

Przykład 3 – Gdy tabela NIE ma DOMYŚLNEGO ograniczenia

Oto, co się dzieje, gdy tabela nie ma ograniczenia DEFAULT.

SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Wynik:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 0                     |
+-----------------------+

W tym przypadku obiektem jest tabela, po prostu nie ma ograniczenia DOMYŚLNEGO.

Przykład 4 – Kiedy obiekt nie jest tabelą

Oto, co się dzieje, gdy baza danych zawiera obiekt z identyfikatorem, ale ten obiekt nie jest tabelą.

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

Wynik:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| NULL                  |
+-----------------------+

Przykład 5 – 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('InvalidObject'), 'TableHasDefaultCnst') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') AS [12345678];

Wynik:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

W tym przypadku baza danych nie zawiera obiektów o tej nazwie lub identyfikatorze, więc otrzymuję wynik NULL.

Otrzymasz również NULL w przypadku błędu lub braku uprawnień do przeglądania obiektu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdowanie kolejności węzłów w dokumencie XML w SQL Server

  2. Zapobieganie wstrzykiwaniu SQL w ASP.Net

  3. Przełączanie partycji w SQL Server (T-SQL)

  4. Jak zwrócić wyniki zapytania jako listę oddzieloną przecinkami w SQL Server — STRING_AGG()

  5. Opóźniona trwałość w SQL Server 2014