O que é esse ícone de chave de prata de cabeça para baixo

11

Eu herdei um servidor e um banco de dados de terceiros do SQL Server 2005 para procurar gerar relatórios e painéis.

Em uma mesa, encontrei um novo ícone: uma chave azul-prateada de cabeça para baixo, ao lado de outras chaves primárias e estrangeiras.

Quando clico com o botão direito do mouse, o menu de contexto me dá a opção "Restrição de script como", mas quando tento "Modificá-la", ele abre o formulário de design da coluna (como chaves primárias) e, no entanto, aparece no Seção "Índices", não restrições.

Alguém sabe como é chamado e para que é usado?

Chave de cabeça para baixo

Philippe
fonte

Respostas:

12

Isso significa uma restrição única. No SQL Server, uma restrição exclusiva é realmente implementada como um índice oculto; é por isso que ele também aparece no Indexesnó (não posso dar uma boa explicação de por que ele não está listado pelo menos no Constraintsnó nem por que eles escolheram uma chave de cabeça para baixo em vez de apenas uma cor diferente).

Você deve ver um resultado aqui para validar que isso é realmente implementado como um índice:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';

Você disse que viu "Restrição de script como ..." - se você seguisse adiante, ele forneceria um script parecido com:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)

Mas não execute-o porque esta sintaxe não usa um nome e apenas criará uma segunda restrição exclusiva redundante ...

Aqui está uma reprodução muito simples e a prova de que eu recebo a chave de cabeça para baixo, mesmo com sintaxe muito básica, em 2014:

CREATE TABLE dbo.foo(id INT UNIQUE);

insira a descrição da imagem aqui Clique para ampliar

Agora, você pode obter um ícone diferente se criar explicitamente um índice exclusivo (e as únicas diferenças nas quais verá sys.indexeso nome e o valor de is_unique_constraint):

insira a descrição da imagem aqui Clique para ampliar

Para outras diferenças, consulte esta resposta Stack Overflow .

Aaron Bertrand
fonte
1
É específico para o SQL2005? Porque quando tento adicionar um índice UNIQUE, recebo um ícone diferente (algum tipo de árvore invertida). E quando adiciono uma restrição, recebo algum tipo de ícone de tabela com colchetes. Não consigo reproduzir esse ícone.
Philippe
@Philippe Resposta atualizada.
Aaron Bertrand
Obrigado. Essa foi uma explicação detalhada e rápida! :-)
Philippe