Restricción única en múltiples columnas

Resuelto loviji asked hace 14 años • 4 respuestas
CREATE TABLE [dbo].[user](
        [userID] [int] IDENTITY(1,1) NOT NULL,
        [fcode] [int] NULL,
        [scode] [int] NULL,
        [dcode] [int] NULL,
        [name] [nvarchar](50) NULL,
        [address] [nvarchar](50) NULL,
     CONSTRAINT [PK_user_1] PRIMARY KEY CLUSTERED 
    (
        [userID] ASC
    )
    ) ON [PRIMARY]

    GO

¿Cómo agrego una restricción única para columnas fcode, scode, dcodecon t-sqly/o management studio? fcode, scode, dcodedeben ser únicos juntos.

loviji avatar Aug 13 '10 13:08 loviji
Aceptado

Si la tabla ya está creada en la base de datos, puede agregar una restricción única más adelante utilizando esta consulta SQL:

ALTER TABLE dbo.User
  ADD CONSTRAINT ucCodes UNIQUE (fcode, scode, dcode)
marc_s avatar Aug 13 '2010 06:08 marc_s

Al utilizar la definición de restricciones en la creación de tablas, puede especificar una o varias restricciones que abarquen varias columnas. La sintaxis, simplificada de la documentación de technet , tiene la forma:

CONSTRAINT constraint_name UNIQUE [ CLUSTERED | NONCLUSTERED ] 
(
    column [ ASC | DESC ] [ ,...n ]
)

Por lo tanto, la definición de la tabla resultante sería:

CREATE TABLE [dbo].[user](
    [userID] [int] IDENTITY(1,1) NOT NULL,
    [fcode] [int] NULL,
    [scode] [int] NULL,
    [dcode] [int] NULL,
    [name] [nvarchar](50) NULL,
    [address] [nvarchar](50) NULL,
    CONSTRAINT [PK_user_1] PRIMARY KEY CLUSTERED 
    (
        [userID] ASC
    ),
    CONSTRAINT [UQ_codes] UNIQUE NONCLUSTERED
    (
        [fcode], [scode], [dcode]
    )
) ON [PRIMARY]
devmake avatar Aug 13 '2010 06:08 devmake

Esto también se puede hacer en la GUI. A continuación se muestra un ejemplo que agrega una restricción única de varias columnas a una tabla existente.

  1. Debajo de la tabla, haga clic con el botón derecho en Índices ->Haga clic/coloque el cursor sobre Nuevo índice ->Haga clic en Índice no agrupado...

ingrese la descripción de la imagen aquí

  1. Se le dará un nombre de índice predeterminado, pero es posible que desee cambiarlo. Marque la casilla de verificación Único y haga clic en el botón Agregar...

ingrese la descripción de la imagen aquí

  1. Marque las columnas que desea incluir

ingrese la descripción de la imagen aquí

Haga clic en Aceptar en cada ventana y listo.

Tony L. avatar Aug 18 '2016 15:08 Tony L.