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

Jaka jest domyślna nazwa ograniczenia w programie SQL Server?

Problem:

Chcesz poznać domyślne nazwy ograniczeń w bazie danych SQL Server.

Przykład:

W naszej bazie danych tworzymy dwie tabele, country i student , z następującymi ograniczeniami:PRIMARY KEY (kolumna id w tabelach country i student ), FOREIGN KEY (kolumna country_id w tabeli student ), DEFAULT (kolumna name w tabeli student ), UNIQUE (kolumna name w tabeli country i kolumna personal_number w tabeli student ) i CHECK (kolumna age w tabeli student ).

Rozwiązanie:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int FOREIGN KEY references country(id)
);

Pokażmy, jak SQL Server domyślnie nazywa ograniczenia tych tabel. Użyj tego zapytania, aby je zobaczyć:

SELECT TABLE_CATALOG, TABLE_NAME,
       CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Oto wynik:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
kraj KLUCZ PODSTAWOWY PK__country__3213E83F7EFD826D
kraj UNIKALNE UQ__country__72E12F1BB69A1D8C
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:

Kiedy tworzymy nasze tabele, ustawiamy ograniczenia dla niektórych kolumn. Jednak nie określamy nazw dla tych ograniczeń, więc są one nazwane domyślnie. Jak generowane są domyślne nazwy ograniczeń?

W SQL Server domyślne nazwy ograniczeń zaczynają się od określonych przedrostków:PK , UQ , CK lub FK .

Domyślna nazwa PRIMARY KEY ograniczenie zaczyna się od „PK ”, po którym następuje podkreślenie („__ ’), nazwa tabeli, więcej podkreśleń („__ ’) oraz szesnastkowy numer sekwencyjny wygenerowany przez program SQL Server. W naszym przykładzie PK__country__3213E83F7EFD826D to domyślna nazwa ograniczenia klucza podstawowego w tabeli country i PK__student__3213E83F357C7D1D to domyślna nazwa ograniczenia klucza podstawowego w tabeli student .

Domyślna nazwa FOREIGN KEY ograniczenie zaczyna się od „FK ”, po którym następuje podkreślenie („__ ’), nazwa tabeli, więcej podkreśleń („__ ’), nazwę powiązanej tabeli oraz szesnastkowy numer sekwencyjny wygenerowany przez program SQL Server. W naszym przykładzie FK__student__country__4F7CD00D to domyślna nazwa ograniczenia klucza obcego w tabeli student która jest odpowiednikiem kolumny id w tabeli country .

Domyślna nazwa dla UNIQUE ograniczenie to „UQ ’, podkreślenia (‘__ ’), nazwa tabeli, więcej podkreśleń („__ ’) oraz szesnastkowy numer sekwencyjny wygenerowany przez program SQL Server. W naszym przykładzie UQ__country__72E12F1BB69A1D8C to domyślna nazwa ograniczenia przez unikalność dla nazwy kolumny w tabeli country i UQ__student__24E2EDD2AC2A7D87 UNIQUE ograniczenie dla nazwy kolumny tabeli student . UNIQUE ograniczenia z wieloma kolumnami są nazywane w podobny sposób.

Domyślna nazwa dla CHECK ograniczenie to „CK ’, podkreślenia (‘__ ’), nazwa tabeli, więcej podkreśleń („__ ”), nazwę kolumny, więcej podkreśleń („__”) i szesnastkowy numer sekwencyjny wygenerowany przez SQL Server. W naszym przykładzie CK__student__age__4E88ABD4 jest domyślną nazwą dla CHECK ograniczenie dla kolumny age tabeli student .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyć liczby zmiennoprzecinkowej lub dziesiętnej dla kwoty w dolarach w aplikacji księgowej?

  2. Tablix:Powtarzanie wierszy nagłówka na każdej stronie nie działa — Report Builder 3.0

  3. Czy powinienem używać !=lub <> dla not equal w T-SQL?

  4. Utwórz wyzwalacz DML w SQL Server

  5. Napraw „Konwersja nie powiodła się podczas konwersji wartości varchar” podczas próby połączenia w SQL Server