Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar o nome de uma restrição no SQL Server

Problema:


Você deseja localizar os nomes das restrições em uma tabela no SQL Server.

Exemplo:


Queremos exibir os nomes das restrições na tabela student .

Solução:

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

Aqui está o resultado:
TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
aluno CHAVE PRIMÁRIA PK__student__3213E83F357C7D1D
aluno ÚNICO UQ__student__24E2EDD2AC2A7D87
aluno VERIFICAR CK__student__age__4E88ABD4
aluno CHAVE ESTRANGEIRA FK__student__country__4F7CD00D

Discussão:


Use a visualização table_constraints no information_schema esquema. A coluna table_name fornece o nome da tabela na qual a restrição é definida e a coluna constraint_name contém o nome da restrição. A coluna constraint_type indica o tipo de restrição:PRIMARY KEY para o tipo de chave primária, FOREIGN KEY para o tipo de chave estrangeira, UNIQUE para os valores exclusivos e CHECK para a verificação de restrição.

Por exemplo, a chave primária no arquivo student tabela tem o nome de restrição PK_student_3213E83F357C7D1D . O constraint_type coluna fornece informações sobre o tipo de cada restrição; para a chave primária, é PRIMARY KEY . O table_name coluna nesta exibição indica qual tabela contém essa restrição.

No entanto, se você quiser selecionar o DEFAULT restrição de um banco de dados, use esta consulta abaixo.
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';

Aqui está o resultado:
nome definição
DF__student__name__4D94879B ("desconhecido")

O nome do DEFAULT restrição é armazenada no nome da coluna, mas o valor está na coluna definition . Unindo as visualizações sys.default_constraint se sys.objects nos permite selecionar apenas os dados de uma determinada tabela (no nosso exemplo, a tabela student ) com o uso da cláusula WHERE. O nome da restrição contém o nome da tabela (student ) e o nome da coluna(name ).