2017-12-28 16 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 온라인 설명서를 참조하십시오.

+1

어떤 버전의 SQL Server입니까? Microsoft는 2014 년까지 적용됩니다. – SQLChao

+0

2012 년 나를 위해 작동하지 않습니다. https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql의 예제도 CREATE TABLE 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에 따르면,이 구문 2014 SQL Server 버전 이상에서 작동합니다. 당신은 문서에서 정보의 다음 조각을 찾을 수 있습니다

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

적용

: SQL 서버 2014 SQL 서버 2017과 푸른 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과 호환 인라인 구문을 사용하여 동일한 결과를 얻을 수 있습니다 것입니다 CI 키가 있어야하며 SQL Server는 항상 클러스터형 인덱스가있는 테이블에서 만들어진 고유하지 않은 비 클러스터형 인덱스 키에 클러스터형 키를 추가합니다.