Che cos'è il vincolo univoco in SQL Server:
Il vincolo univoco in SQL Server viene creato su una o più colonne per limitare la o le colonne in modo che accettino solo valori univoci.È consentito un solo valore Null in una colonna in cui viene creato il vincolo univoco.
Scenario:
Supponiamo che tu stia lavorando come sviluppatore SQL Server per compagnia di assicurazioni, ti viene chiesto di creare una tabella dbo.Customer che dovrebbe avere un SSN di colonna e dovrebbe sempre accettare valori Unique.Soluzione:
Per lo scenario precedente, possiamo utilizzare il vincolo univoco sulla colonna SSN. Lo script sottostante può essere utilizzato per creare un vincolo univoco su una colonna.USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Unique(SSN) ) --Insert sample records in table Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null) ,('Aamir','Shahzad','000-00-0001') ,('Aamir','Shahzad','000-00-0002')
Controlla i dati nella tabella dbo.Customer utilizzando Seleziona query
Come aggiungere un vincolo univoco su una colonna in SQL Server |
Utilizziamo le viste di sistema per verificare se Unique Constraint è stato aggiunto e quale nome gli è stato assegnato da SQL Server.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'UNIQUE'
Come aggiungere un vincolo univoco in SQL Server |
Come possiamo vedere, SQL Server ha assegnato il nome "UQ__Customer__CA1E8E3C7E8AFCB1" a Unique Constraint. Se vogliamo implementare alcune convenzioni di denominazione, dovremmo aver fornito il nome da soli.
Se proviamo a inserire il valore già esistente nella colonna Unique Constraint, otterremo un errore inferiore.
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null)
Msg 2627, livello 14, stato 1, riga 11
Violazione del vincolo UNIQUE KEY 'UQ__Customer__CA1E8E3C7E8AFCB1'. Impossibile inserire la chiave duplicata nell'oggetto 'dbo.Customer'. Il valore della chiave duplicata è (
L'istruzione è stata terminata.
Se desideri creare il vincolo univoco con qualche convenzione di denominazione, possiamo utilizzare la sintassi seguente.
USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Constraint UQ_Dbo_Customer_SSN Unique(SSN) )
Video demo:cos'è il vincolo univoco in SQL Server