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

Какво е името на ограничението по подразбиране в SQL Server?

Проблем:

Искате да знаете имената по подразбиране на ограниченията в базата данни на SQL Server.

Пример:

В нашата база данни създаваме две таблици, country и student , със следните ограничения:PRIMARY KEY (колоната id в таблиците country и student ), FOREIGN KEY (колоната country_id в таблицата student ), DEFAULT (колоната name в таблицата student ), UNIQUE (колоната name в таблицата country и колоната personal_number в таблицата student ) и CHECK (колоната age в таблицата student ).

Решение:

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)
);

Нека покажем как SQL Server наименува ограниченията на тези таблици по подразбиране. Използвайте тази заявка, за да ги видите:

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

Ето резултата:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
държава ПЪРВИЧЕН КЛЮЧ PK__country__3213E83F7EFD826D
държава УНИКАЛНО UQ__country__72E12F1BB69A1D8C
ученик ПЪРВИЧЕН КЛЮЧ PK__student__3213E83F357C7D1D
ученик УНИКАЛНО UQ__student__24E2EDD2AC2A7D87
ученик ПРОВЕРКА CK__student__age__4E88ABD4
ученик ВЪНШЕН КЛЮЧ FK__student__country__4F7CD00D

Дискусия:

Когато създаваме нашите таблици, ние задаваме ограничения за някои колони. Въпреки това, ние не уточняваме имената на тези ограничения, така че те са наименувани по подразбиране. Как се генерират имената по подразбиране за ограничения?

В SQL Server имената на ограниченията по подразбиране започват със специфични префикси:PK , UQ , CK , или FK .

Името по подразбиране за PRIMARY KEY ограничението започва с „PK “, последвано от долни черти („__ “), името на таблицата, още долни черти (‘__ ’) и шестнадесетичен пореден номер, генериран от SQL Server. В нашия пример PK__country__3213E83F7EFD826D е името по подразбиране за ограничението на първичния ключ в таблицата country и PK__student__3213E83F357C7D1D е името по подразбиране за ограничението на първичния ключ в таблицата student .

Името по подразбиране за FOREIGN KEY ограничението започва с „FK “, последвано от долни черти („__ “), името на таблицата, още долни черти (‘__ ’), името на свързаната таблица и шестнадесетичен пореден номер, генериран от SQL Server. В нашия пример FK__student__country__4F7CD00D е името по подразбиране за ограничението за външен ключ в таблицата student което е еквивалентно на колоната id в таблицата country .

Името по подразбиране за UNIQUE ограничението е „UQ “, подчертава („__ “), името на таблицата, още долни черти (‘__ ’) и шестнадесетичен пореден номер, генериран от SQL Server. В нашия пример UQ__country__72E12F1BB69A1D8C е името по подразбиране на уникалното ограничение за името на колоната в таблицата country и UQ__student__24E2EDD2AC2A7D87 на UNIQUE ограничение за името на колоната на таблицата student . UNIQUE ограниченията с множество колони се именуват по подобен модел.

Името по подразбиране за CHECK ограничението е „CK “, подчертава („__ “), името на таблицата, още долни черти (‘__ “), името на колоната, още долни черти („__“) и шестнадесетичен пореден номер, генериран от SQL Server. В нашия пример, CK__student__age__4E88ABD4 е името по подразбиране за CHECK ограничение за колоната age на таблицата 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. Вътрешни елементи за репликация на транзакции на SQL сървър – част 2

  2. Как да шифровате дефинирана от потребителя функция в SQL Server

  3. Функции на SQL Server TRIM, LTRIM и RTRIM

  4. Множество индекси срещу индекси с няколко колони

  5. Фатална грешка:Извикване на недефинирана функция sqlsrv_connect() в C:\xampp\htdocs