views:

43

answers:

2
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     
)

This results in Incorrect syntax near the keyword 'nonclustered'. I referred to the MSDN help for the create table syntax. I am not sure whats wrong here.

Thanks for reading.

A: 

Erase this nonclustered keyword and use CREATE INDEX statement to add index to this table, documentation of this can read in:

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

Syntax is here:

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" } ]

[ ; ]

Code is here:

CREATE NONCLUSTERED INDEX index_clustered ON FavoriteDish CelebrityName 
Svisstack
Svisstack, Thank u , I am aware of this but can i not create it within the create table statement. As the Create Table syntax says, it shd be possible to create NON-UNIQUE NONCLUSTERED index using Create Table statement
isthatacode
+1  A: 

The help in books online does in fact mention the keyword CLUSTERED, but it is only relevant for UNIQUE or PRIMARY KEY constraints. Both these constraints create an index, and you can specify if that index is to be clustered or non-clustered.

You cannot use that syntax to create a standard non clustered index.

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     
)
edosoft
aha, Makes sense. its should be a clause on msdn then.
isthatacode