Es posible crear una clave principal o índice único dentro de una instrucción CREATE TABLE de SQL Server. ¿Es posible crear un índice no único dentro de una instrucción CREATE TABLE?Crear un índice no único no agrupado dentro de la instrucción CREATE TABLE con SQL Server
CREATE TABLE MyTable(
a int NOT NULL
,b smallint NOT NULL
,c smallint NOT NULL
,d smallint NOT NULL
,e smallint NOT NULL
-- This creates a primary key
,CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (a)
-- This creates a unique nonclustered index on columns b and c
,CONSTRAINT IX_MyTable1 UNIQUE (b, c)
-- Is it possible to create a non-unique index on columns d and e here?
-- Note: these variations would not work if attempted:
-- ,CONSTRAINT IX_MyTable2 INDEX (d, e)
-- ,CONSTRAINT IX_MyTable3 NONCLUSTERED INDEX (d, e)
);
GO
-- The proposed non-unique index should behave identically to
-- an index created after the CREATE TABLE statement. Example:
CREATE NONCLUSTERED INDEX IX_MyTable4 ON MY_TABLE (d, e);
GO
Una vez más, el objetivo es crear el índice no exclusivo dentro de la sentencia CREATE TABLE, no después.
Por lo que vale, no encontré el [SQL Server Books Online entry for CREATE TABLE] para ser útil.
Además, [This Question] es casi idéntico, pero la respuesta aceptada no se aplica.
¡Gracias por la gran explicación! ¿Por qué? Puramente por razones estéticas. Pensé que podría ser conveniente para cualquiera que lea la secuencia de comandos si todas las restricciones/índices están contenidos en la misma declaración. Personalmente, me gusta saber si las columnas que pertenecen a una clave externa también tienen un índice, y este puede haber sido un buen método para agrupar lógicamente esta información en la misma declaración. – Mike
Recibí 'Error: (1146) La tabla 'nombre de tabla' no existe', hahahah, irónico –