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