Restricción única en múltiples columnas
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, dcode
con t-sql
y/o management studio
? fcode, scode, dcode
deben ser únicos juntos.
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)
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]
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.
- 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...
- 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...
- Marque las columnas que desea incluir
Haga clic en Aceptar en cada ventana y listo.