2010-04-22 19 views
14
Create table FavoriteDish  
( 
FavID int identity (1,1) primary key not null,  
DishID int references Dishes(DishID) not null ,  
CelebrityName nvarchar(100) nonclustered not null  
) 

Esto resultados en Incorrect syntax near the keyword 'nonclustered'. Me referí a la ayuda de MSDN para la sintaxis de la tabla de creación. No estoy seguro de qué está mal aquí.Cómo crear un índice no agrupado en Crear tabla?

+0

Posible duplicado de [Crear un índice no único no agrupado dentro de la sentencia CREATE TABLE con SQL Server] (http://stackoverflow.com/questions/6193293/create-a-nonclustered-non-unique-index -within-the-create-table-statement-with-sq) – AaronLS

+0

@AaronLS A esta pregunta en particular se le pide el primer significado antes que la pregunta que está señalando. Lo que significa que el que está señalando se puede llamar duplicado de este y no al revés –

Respuesta

16

La ayuda en los libros en línea de hecho, menciona la palabra clave CLUSTERED, pero solo es relevante para las restricciones UNIQUE o PRIMARY KEY. Ambas restricciones crean un índice, y puede especificar si ese índice debe agruparse o no agruparse.

No puede usar esa sintaxis para crear un índice estándar no agrupado.

Create table FavoriteDish  
( 
FavID int identity (1,1) primary key not null,  
DishID int references Dishes(DishID) not null ,  
CelebrityName nvarchar(100) constraint ux_CelebrityName unique NONCLUSTERED not null  
) 
+0

aha, tiene sentido. debería ser una cláusula en msdn entonces. –

+5

No se olvide de añadir una convención de nombre adecuado para el índice PK_ de claves primarias UK_ de claves únicas IX_ para los índices no agrupados únicos no UX_ de índices únicos Toda mi nombre de índice tener el formulario de <índice o tipo de clave> _

_ _ _ mario

10

Borrar esta palabra clave no agrupado y el uso CREATE INDEX para agregar índice a esta tabla, la documentación de esto se puede leer en:

http://msdn.microsoft.com/en-us/library/ms188783.aspx

Sintaxis está aquí:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> (column [ ASC | DESC ] [ ,...n ]) 
    [ INCLUDE (column_name [ ,...n ]) ] 
    [ WHERE <filter_predicate> ] 
    [ WITH (<relational_index_option> [ ,...n ]) ] 
    [ ON { partition_scheme_name (column_name) 
     | filegroup_name 
     | default 
     } 
    ] 
    [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ] 

[ ; ] 

Código está aquí :

CREATE NONCLUSTERED INDEX index_clustered ON FavoriteDish(CelebrityName asc) 
+4

Svisstack, Gracias, estoy al tanto de esto pero no puedo crearlo dentro de la declaración de crear tabla. Como dice la sintaxis Crear tabla, podría ser posible crear un índice NONCLUSTERO NO UNICO utilizando la declaración Crear tabla –

+0

. Consulte aquí: http://stackoverflow.com/questions/6193293/create-a-nonclustered-non-unique-index -within-the-create-table-statement-with-sq –

Cuestiones relacionadas