Array
(
)

SLQ Sintaxe incorreta próxima a INDEX.

Dbug
   - 08 mai 2016

Boa noite,
O código apresenta "Sintaxe incorreta próxima a 'INDEX' " ao analisar:
CREATE TABLE Academia (
Haula INTEGER NOT NULL,
FREQUENCIA_idFREQUENCIA INTEGER NOT NULL,
Instrutores_IDInstrutor INT NOT NULL,
TotalAL INTEGER NULL,
ALporINST INTEGER NULL,
MaiorFrequencia INTEGER NULL,
PRIMARY KEY(Haula),
INDEX Academia_FKIndex1(Instrutores_IDInstrutor),
INDEX Academia_FKIndex2(FREQUENCIA_idFREQUENCIA)
);
CREATE TABLE ALUNOS (
IDAluno INTEGER NOT NULL,
Academia_Haula INTEGER NOT NULL,
Instrutores_IDInstrutor INT NOT NULL,
NomeAL VARCHAR(60) NULL,
CPFAL INTEGER(11) NOT NULL,
RgAL INTEGER(10) NOT NULL,
RUAAL VARCHAR(100) NULL,
BairroAL INTEGER NULL,
CIDADE INTEGER NULL,
CEP INTEGER NULL,
ESTADO INTEGER NULL,
PaulaAL VARCHAR(10) NULL,
QaulasAL INTEGER NULL,
HaulaAL TIMESTAMP NULL,
DIAAL INTEGER NULL,
PRIMARY KEY(IDAluno),
INDEX ALUNOS_FKIndex1(Instrutores_IDInstrutor),
INDEX ALUNOS_FKIndex2(Academia_Haula)
);
CREATE TABLE FREQUENCIA (
idFREQUENCIA INTEGER NOT NULL,
ALUNOS_idALUNO INTEGER NOT NULL,
dias5 INTEGER UNSIGNED NULL,
dias2 INTEGER UNSIGNED NULL,
dias3 INTEGER UNSIGNED NULL,
DATAAULA TIMESTAMP NULL,
PRIMARY KEY(idFREQUENCIA),
INDEX FREQUENCIA_FKIndex1(ALUNOS_idALUNO)
);
CREATE TABLE Instrutores (
IDInstrutor INT NOT NULL,
NomeINST VARCHAR NULL,
PeriodoINST VARCHAR(1) NULL,
HaulaINST TIMESTAMP NULL,
PRIMARY KEY(IDInstrutor)
);
Este é meu primeiro projeto e contato com a linguagem. A proposto sugerida é a seguinte:
Uma empresa está iniciando as atividades no ramo deacademias de ginástica e precisa
gerenciar os clientes. O aluno pode optar por ter aulas 2, 3 ou 5 vezes por semana no período da
manhã, tarde e noite e isso terá que ser vinculado ao cadastro do aluno.
A academia possui vários instrutores. Cada instrutor possui um código o nome e o período que o
mesmo estará disponível. Um instrutor, pode orientar vários alunos, mas um aluno só pode ter
uma instrutor. A academia precisa armazenar a data e hora de entrada e saída dos alunos para
futuro controle de frequência. Será preciso também armazenar as seguintes informações do
cliente: nome, rg, cpf endereço, período de atividade, frequência semanal e instrutor designado.
Cada endereço deve ter nome da rua, bairro, cidade,estado, cep.
Gostaria de entender o porque do erro
"Mensagem 1018, Nível 15, Estado 1, Linha 9
Sintaxe incorreta próxima a 'INDEX'. Se a intenção é funcionar como parte de uma dica de tabela, serão necessárias agora uma palavra-chave WITH e parênteses. Consulte os manuais online do SQL Server para conhecer a sintaxe adequada.
Mensagem 1018, Nível 15, Estado 1, Linha 30
Sintaxe incorreta próxima a 'INDEX'. Se a intenção é funcionar como parte de uma dica de tabela, serão necessárias agora uma palavra-chave WITH e parênteses. Consulte os manuais online do SQL Server para conhecer a sintaxe adequada.
Mensagem 102, Nível 15, Estado 1, Linha 37
Sintaxe incorreta próxima a 'UNSIGNED'.
"
Ao executar o código acima.
E a partir dai tentar construir o script para a proposta apresentada. Desde já obrigado.

Isaac Jose
   - 09 mai 2016

boa tarde..
amigo da uma olhada nesse cara para que você entenda melhor a questão dos index,
https://msdn.microsoft.com/pt-br/library/ms188783(v=sql.120).aspx

outra coisa a tabela de alunos apresenta campos interger (10) etc. não vai criar a tabela .

crie primeiro elas e depois os index para estruturar melhor seu projeto .

segue exemplos.
drop tABLE producao.Tb_Alunos
go

CREATE TABLE producao.Tb_Alunos
(
IDAluno INTEGER NOT NULL,
Academia_Haula INTEGER NOT NULL,
Instrutores_IDInstrutor INT NOT NULL,
NomeAL VARCHAR(60) NULL,
CPFAL INTEGER NOT NULL,
RgAL INTEGER NOT NULL,
RUAAL VARCHAR(100) NULL,
BairroAL INTEGER NULL,
CIDADE INTEGER NULL,
CEP INTEGER NULL,
ESTADO INTEGER NULL,
PaulaAL VARCHAR(10) NULL,
QaulasAL INTEGER NULL,
HaulaAL TIMESTAMP NULL,
DIAAL INTEGER NULL,
PRIMARY KEY(IDAluno)
);

--CRIA INDEX IDX_CODGR
IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.tabela')
AND NAME ='IDX_CODGR')
DROP INDEX IDX_CODGR ON schema.tabela
GO