Cos'è questa chiave d'argento capovolta


11

Ho ereditato un server e un database di terze parti di SQL Server 2005 da esaminare per poter generare report e dashboard.

Su un tavolo, ho trovato una nuova icona: una chiave capovolta blu-argento, accanto alle altre mie chiavi primarie e straniere.

Quando faccio clic con il tasto destro del mouse, il menu di scelta rapida mi dà l'opzione "Vincolo script come", ma quando provo a "Modificarlo", apre il modulo di progettazione della colonna (come le chiavi primarie), eppure appare nel Sezione "Indici", non vincoli.

Qualcuno sa come si chiama e per cosa viene utilizzato?

Tasto capovolto

Risposte:


12

Significa un vincolo unico. In SQL Server, un vincolo univoco viene effettivamente implementato come indice sotto le copertine; questo è il motivo per cui appare anche sotto il Indexesnodo (non posso darti una buona spiegazione del perché non sia almeno elencato sotto il Constraintsnodo, né perché hanno scelto una chiave capovolta invece di un colore diverso).

Dovresti vedere un risultato qui per confermare che questo è effettivamente implementato come indice:

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

Hai detto di aver visto "Vincolo script come ..." - se lo avessi seguito, ti avrebbe fornito uno script simile al seguente:

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

Ma non eseguirlo perché questa sintassi non utilizza un nome e creerà solo un secondo vincolo univoco ridondante ...

Ecco una riproduzione molto semplice, e la prova che ottengo il tasto capovolto anche con una sintassi molto semplice, nel 2014:

CREATE TABLE dbo.foo(id INT UNIQUE);

inserisci qui la descrizione dell'immagine clicca per ingrandire

Ora puoi ottenere un'icona diversa se crei esplicitamente un indice univoco (e le uniche differenze che vedrai sys.indexessono il nome e il valore di is_unique_constraint):

inserisci qui la descrizione dell'immagine clicca per ingrandire

Per altre differenze, vedi questa risposta Stack Overflow .


1
È specifico di SQL2005? Perché quando provo ad aggiungere un indice UNICO, ottengo un'icona diversa (una specie di albero rovesciato). E quando aggiungo un Vincolo, ottengo una sorta di icona di tabella a parentesi quadre. Non riesco a riprodurre questa icona.
Philippe,

@Philippe Risposta aggiornata.
Aaron Bertrand

Grazie. Quella era una spiegazione dettagliata, e una rapida! :-)
Philippe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.