2010-04-22 9 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  
) 

Dies ergibt Incorrect syntax near the keyword 'nonclustered'. Ich habe auf die MSDN-Hilfe für die create-Tabelle-Syntax verwiesen. Ich bin mir nicht sicher, was hier falsch ist.Wie erstellt man Nonclustered-Index in Create Table?

+0

Mögliche Duplikat [Erstellen Sie einen nicht gruppierten nicht eindeutigen Index innerhalb der TABLE-Anweisung mit SQL Server CREATE] (http://stackoverflow.com/questions/6193293/create-a-nonclustered-non-unique-index -within-the-create-table-Anweisung-with-sq) – AaronLS

+0

@AaronLS Diese spezielle Frage wird zuerst um Bedeutung gebeten, bevor die Frage, auf die Sie verweisen. Was bedeutet, dass der, den du zeigst, Duplikat von diesem sein kann und nicht umgekehrt –

Antwort

16

Die Hilfe in Büchern online erwähnt zwar das Schlüsselwort CLUSTERED, ist jedoch nur für UNIQUE- oder PRIMARY KEY-Einschränkungen relevant. Beide Einschränkungen erstellen einen Index, und Sie können angeben, ob dieser Index gruppiert oder nicht gruppiert sein soll.

Sie können diese Syntax nicht verwenden, um einen standardmäßigen nicht gruppierten Index zu erstellen.

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, macht Sinn. Es sollte dann eine Klausel auf msdn sein. –

+5

Vergessen Sie nicht, eine richtige Namenskonvention für den Index PK_ für Primärschlüssel UK_ für eindeutige Schlüssel ix_ für nicht gruppierten nicht eindeutigen Indizes UX_ für eindeutige Indizes Alle meine Indexnamen hinzuzufügen nehmen die Form _

_ _ _ mario

10

Erase dies nicht gruppierten Schlüsselwort und Verwendung Anweisung CREATE INDEX Index zu dieser Tabelle hinzugefügt werden, die Dokumentation dieser lesen kann:

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

Syntax ist hier:

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 ist hier :

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

Svisstack, Vielen Dank, ich bin mir dessen bewusst, aber ich kann es nicht innerhalb der Create Table-Anweisung erstellen. Wie die Create Table-Syntax sagt, könnte es möglich sein, einen NON-UNIQUE NONCLUSTERED-Index mit der Create Table-Anweisung –

+0

zu erstellen. Bitte siehe hier: http://stackoverflow.com/questions/6193293/create-a-nonclustered-non-unique-index -within-the-create-table-Anweisung-with-sq –

Verwandte Themen