Creare vincoli UNIQUE

Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL diIstanza gestita di SQL di Azure

È possibile creare un vincolo di unicità in SQL Server utilizzando SQL Server Management Studio o Transact-SQL per assicurare non vengano immessi valori duplicati nelle colonne specifiche che non partecipano in una chiave primaria. La creazione automatica di un vincolo univoco crea un indice univoco corrispondente.

Nota

Per informazioni sui vincoli di unicità in Azure Synapse Analytics, vedere Chiave primaria, chiave esterna e chiave univoca in Azure Synapse Analytics.

Autorizzazioni

È necessario disporre dell'autorizzazione ALTER per la tabella.

Usare SQL Server Management Studio (SSMS)

Creare un vincolo di unicità usando SSMS

  1. In Esplora oggettifare clic con il pulsante destro del mouse sulla tabella nella quale aggiungere un vincolo univoco e scegliere Progetta.

  2. Selezionare Indici/chiavi nel menu Progettazione tabelle.

  3. Nella finestra di dialogo Indici/chiavi selezionare Aggiungi.

  4. Nella griglia in Generale selezionare Tipo e scegliere Chiave univoca dall'elenco a discesa a destra della proprietà, quindi selezionare Chiudi.

  5. Nel menu File scegliere Salva nome tabella.

Usare Transact-SQL

Creare un vincolo di unicità usando Transact-SQL

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio viene creata la tabella TransactionHistoryArchive4 e un vincolo univoco sulla colonna TransactionID.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive4  
     (  
       TransactionID int NOT NULL,   
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)   
    );   
    GO  
    

Creare un vincolo di unicità in una tabella esistente

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio viene creato un vincolo univoco nelle colonne PasswordHash e PasswordSalt della tabella Person.Password.

    USE AdventureWorks2022;   
    GO  
    ALTER TABLE Person.Password   
    ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);   
    GO  
    
    

Creare un vincolo di unicità in una nuova tabella

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio viene creata una tabella e definito un vincolo univoco nelle colonne TransactionID.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive2  
    (  
       TransactionID int NOT NULL,  
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)  
    );  
    GO  
    

Creare un vincolo di unicità in una colonna che ammette i valori Null

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio viene creato un vincolo di unicità filtrato usando la sintassi CREATE UNIQUE INDEX applicando solo l'univocità sui valori non NULL.

    USE AdventureWorks2022;  
    GO
    CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion
    ON dbo.AdventureWorksDWBuildVersion (DBVersion)
    WHERE (DBVersion IS NOT NULL);
    GO