Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que é restrição exclusiva no SQL Server - Tutorial SQL Server / TSQL Parte 95

O que é restrição exclusiva no SQL Server:

A restrição exclusiva no SQL Server é criada em uma coluna ou colunas para restringir a(s) coluna(s) a aceitar apenas valores exclusivos.
Somente um valor nulo único é permitido em uma coluna na qual a restrição exclusiva é criada.

Cenário:

Digamos que você esteja trabalhando como desenvolvedor SQL Server para uma seguradora, você é solicitado a criar uma tabela dbo.Customer que deve ter um SSN de coluna e deve sempre aceitar valores exclusivos.


Solução:

Para o cenário acima, podemos usar a restrição exclusiva na coluna SSN. O script abaixo pode ser usado para criar uma restrição exclusiva em uma coluna.
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')
 
 
Verifique os dados na tabela dbo.Customer usando Select query
Como adicionar restrição exclusiva em uma coluna no SQL Server

Vamos usar as visualizações do sistema para verificar se a restrição exclusiva foi adicionada e qual nome o SQL Server deu a ela.
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'UNIQUE'
 
Como adicionar restrição exclusiva no SQL Server
 Como podemos ver que o SQL Server deu o nome "UQ__Customer__CA1E8E3C7E8AFCB1" para Unique Constraint. Se quisermos implementar alguma convenção de nomenclatura, deveríamos ter fornecido o nome por nós mesmos.
Se tentarmos inserir o valor que já existe na coluna Restrição Exclusiva, obteremos o erro abaixo.
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza','M',Null)
 
 Msg 2627, Level 14, State 1, Line 11
Violação da restrição UNIQUE KEY 'UQ__Customer__CA1E8E3C7E8AFCB1'. Não é possível inserir a chave duplicada no objeto 'dbo.Customer'. O valor da chave duplicada é ().
A instrução foi encerrada.

Se você quiser criar a restrição exclusiva com alguma convenção de nomenclatura, podemos usar a sintaxe abaixo.

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


Demonstração em vídeo:o que é restrição exclusiva no SQL Server