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

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

Проблем:

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

Пример:

Искаме да покажем имената на ограниченията в таблицата student .

Решение:

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

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

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
ученик ПЪРВИЧЕН КЛЮЧ PK__student__3213E83F357C7D1D
ученик УНИКАЛНО UQ__student__24E2EDD2AC2A7D87
ученик ПРОВЕРКА CK__student__age__4E88ABD4
ученик ВЪНШЕН КЛЮЧ FK__student__country__4F7CD00D

Дискусия:

Използвайте изгледа table_constraints в information_schema схема. Колоната table_name ви дава името на таблицата, в която е дефинирано ограничението, и колоната constraint_name съдържа името на ограничението. Колоната constraint_type указва типа на ограничението:PRIMARY KEY за тип първичен ключ, FOREIGN KEY за типа външен ключ, UNIQUE за уникалните стойности и CHECK за проверка на ограничението.

Например първичният ключ в student таблицата има име на ограничение PK_student_3213E83F357C7D1D . constraint_type колоната ви дава информация за типа на всяко ограничение; за първичния ключ това е PRIMARY KEY . table_name колоната в този изглед показва коя таблица съдържа това ограничение.

Въпреки това, ако искате да изберете DEFAULT ограничение от база данни, използвайте тази заявка по-долу.

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

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

name определение
DF__student__name__4D94879B ("неизвестно")

Името на DEFAULT ограничението се съхранява в името на колоната, но стойността е в колоната definition . Присъединяване на изгледите sys.default_constraint s и sys.objects ни позволява да изберем само данните за дадена таблица (в нашия пример таблицата student ) с използване на клауза WHERE. Името на ограничението съдържа името на таблицата (student ) и името на колоната (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. Вътрешни елементи за репликация на транзакции на SQL Server

  2. Как да завъртите динамично с дата като колона

  3. Вземете подниз в SQL Server

  4. SQL - Разлика между COALESCE и ISNULL?

  5. Как да получа последно въведен идентификатор?