sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es la restricción única en SQL Server? Tutorial de SQL Server/TSQL, parte 95

¿Qué es la restricción única en SQL Server:

La restricción única en SQL Server se crea en una columna o columnas para restringir la columna o columnas para que acepten solo valores únicos.
Solo se permite un valor nulo único en una columna en la que se crea la restricción única.

Escenario:

Supongamos que está trabajando como desarrollador de SQL Server para una compañía de seguros, se le pide que cree una tabla dbo.Customer que debe tener una columna SSN y siempre debe aceptar valores únicos.


Solución:

Para el escenario anterior, podemos usar Restricción única en la columna SSN. La siguiente secuencia de comandos se puede usar para crear una restricción única en una columna.
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')
 
 
Compruebe los datos en la tabla dbo.Customer usando Select query
Cómo agregar Restricciones Únicas en una Columna en SQL Server

Usemos las vistas del sistema para verificar si se agregó Restricción Única y qué nombre le ha dado SQL Server.
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'UNIQUE'
 
Cómo agregar restricciones únicas en SQL Server
 Como podemos ver, SQL Server le ha dado el nombre "UQ__Customer__CA1E8E3C7E8AFCB1" a Unique Constraint. Si queremos implementar alguna convención de nomenclatura, deberíamos haber proporcionado el nombre nosotros mismos.
Si intentamos insertar el valor que ya existe en la columna Restricción única, obtendremos el siguiente error.
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza','M',Null)
 
 Mensaje 2627, Nivel 14, Estado 1, Línea 11
Violación de la restricción CLAVE ÚNICA 'UQ__Customer__CA1E8E3C7E8AFCB1'. No se puede insertar una clave duplicada en el objeto 'dbo.Customer'. El valor de la clave duplicada es ().
La declaración ha sido terminada.

Si desea crear la restricción única con alguna convención de nomenclatura, podemos usar la siguiente sintaxis.

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 de demostración:¿Qué es la restricción única en SQL Server?