2017-12-28 8 views
3
create table tblPeople 
(
    sno int primary key , 
    Name nvarchar(50), 
    Gender nvarchar(10) , 
    Age int , 
    index IX_tblPeople_Age nonclustered(age) 
) 

上記の実行時にエラーが発生します。テーブルの作成中に非クラスタ化インデックスを使用できますか?

'index'付近の構文が正しくありません。これがテーブルヒントの一部として意図されている場合は、今度はWITHキーワードとかっこが必要になります。正しい構文については、SQL Server Books Onlineを参照してください。

+1

どのバージョンのSQL Serverですか? Works for me 2016.マイクロソフトでは、2014年まで適用していると述べています。 – SQLChao

+0

2012年に私にとってはうまくいかず、https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sqlの例も 'CREATE表t4(c1 int、c2 int、INDEX ix_1 NONCLUSTERED(c1、c2)) '同じエラーメッセージ。 – Horaciux

+0

[this](https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql)によると、この構文はSQL Serverのバージョン2014から始まります –

答えて

1

表の後にインデックスを作成する従来の構文を使用できますか?

CREATE TABLE tblPeople (
    sno int primary key , 
    Name nvarchar(50), 
    Gender nvarchar(10) , 
    Age int 
) 
CREATE NONCLUSTERED INDEX IX_tblPeople_Age ON tblPeople (age); 
+0

ありがとうあなたは大変です。しかし、大括弧の中に可能な質問はありますか? –

1

CREATE TABLE documentationによると、この構文は、SQL Server以降の2014年のバージョンで動作します。あなたは、記事中の情報の次の部分を見つけることができます:

INDEX *index_name* [ CLUSTERED | NONCLUSTERED ] (*column_name* [ ASC | DESC ] [ ,... *n* ]) 

に適用されます:SQL Serverの2014 SQL Serverの2017とAzureのSQLデータベース て。

テーブルにインデックスを作成するように指定します。これは、クラスタ化された インデックスまたはノンクラスタードインデックスです。インデックスには列 が表示され、昇順または降順のデータが並べ替えられます。

バージョンが2014年より前であれば、私はこの構文を示唆している:

CREATE TABLE tblPeople (
sno int primary key , 
Name nvarchar(50), 
Gender nvarchar(10) , 
Age int 
) 
GO 
CREATE NONCLUSTERED INDEX IX_tblPeople_Age ON tblPeople (age); 
0

あなたはsnoれるように

create table tblPeople 
(
    sno int primary key , 
    Name nvarchar(50), 
    Gender nvarchar(10) , 
    Age int , 
    Constraint IX_tblPeople_Age unique nonclustered(age, sno) 
) 

と2008と互換性のインライン構文を使用して同じ結果を得ることができますとにかくクラスタ化インデックスを持つテーブルで作成された非一意でない非クラスター化インデックスのキーには常にクラスタ化キーが追加されます。

関連する問題