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

Jak znaleźć nazwę ograniczenia w SQL Server

Problem:

Chcesz znaleźć nazwy ograniczeń w tabeli w SQL Server.

Przykład:

Chcemy wyświetlić nazwy ograniczeń w tabeli student .

Rozwiązanie:

SELECT TABLE_NAME,
       CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;

Oto wynik:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
uczeń KLUCZ PODSTAWOWY PK__student__3213E83F357C7D1D
uczeń UNIKALNE UQ__student__24E2EDD2AC2A7D87
uczeń SPRAWDŹ CK__student__wiek__4E88ABD4
uczeń KLUCZ OBCY FK__student__country__4F7CD00D

Dyskusja:

Użyj widoku table_constraints w information_schema schemat. Kolumna table_name podaje nazwę tabeli, w której zdefiniowane jest ograniczenie, a kolumna constraint_name zawiera nazwę ograniczenia. Kolumna constraint_type wskazuje typ ograniczenia:PRIMARY KEY dla typu klucza podstawowego FOREIGN KEY dla typu klucza obcego UNIQUE dla unikalnych wartości i CHECK do sprawdzenia ograniczeń.

Na przykład klucz podstawowy w student tabela ma nazwę ograniczenia PK_student_3213E83F357C7D1D . constraint_type kolumna zawiera informacje o typie każdego ograniczenia; dla klucza podstawowego jest to PRIMARY KEY . table_name kolumna w tym widoku wskazuje, która tabela zawiera to ograniczenie.

Jeśli jednak chcesz wybrać DEFAULT ograniczenie z bazy danych, użyj poniższego zapytania.

SELECT c.name, c.definition
FROM sys.default_constraints c
JOIN sys.objects o ON o.object_id = c.parent_object_id
WHERE o.name ='student';

Oto wynik:

nazwa definicja
DF__student__name__4D94879B ("nieznane")

Nazwa DEFAULT ograniczenie jest przechowywane w nazwie kolumny, ale wartość znajduje się w kolumnie definition . Dołączanie do widoków sys.default_constraint s i sys.objects pozwala nam wybrać tylko dane dla danej tabeli (w naszym przykładzie tabela student ) z użyciem klauzuli WHERE. Nazwa ograniczenia zawiera nazwę tabeli (student ) i nazwę kolumny (name ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Raportowanie danych wydajności SQLDIAG za pomocą narzędzia RML Utilities | Rozwiązywanie problemów z wydajnością serwera SQL -7

  2. Typ danych VarBinary vs Image SQL Server do przechowywania danych binarnych?

  3. Jak wyłączyć ograniczenie klucza obcego w programie SQL Server (przykłady T-SQL)

  4. Jak porównywać daty w SQL Server

  5. Jakiego rozmiaru używasz dla varchar(MAX) w deklaracji parametru?