Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Tabela associativa

Help! Estou tentando criar uma tabela associativa entre tb_disciplina e tb_aluno mas não estou conseguindo.

Erro na linha 3: Especificação de restrição não permitida qui.

SQL> desc tb_aluno
 Nome                    Nulo?    Tipo
 ----------------------- -------- ----------------
 ID_ALUNO                NOT NULL NUMBER(38)
 NOME_ALUNO              NOT NULL VARCHAR2(50)

SQL> desc tb_disciplina;
 Nome                    Nulo?    Tipo
 ----------------------- -------- ----------------
 ID_DISCIPLINA           NOT NULL NUMBER(38)
 NOME_DISCIPLINA         NOT NULL VARCHAR2(20)

SQL> create table tb_aluno_disciplina (
  2  id_aluno_disciplina integer constraint aluDisc_id_pk primary key,
  3  id_aluno integer constraint aluDisc_idA_fk foreign key (id_aluno) references tb_aluno(id_aluno),
  4  id_disciplina integer constraint aluDisc_idD_fk foreign key (id_disciplina) references tb_disciplina(id_disciplina)
  5  );
id_aluno integer constraint aluDisc_idA_fk foreign key (id_aluno) references tb_aluno(id_aluno),
                 *
ERRO na linha 3:
ORA-02253: especificaþÒo de restriþÒo nÒo
permitida aqui


SQL>
2 respostas
solução!

Olá Carlos, no Oracle você não pode colocar restrição de chave estrangeira na declaração da coluna. O que você pode fazer é declarar as restrições após as declarações de todas as colunas. Tente:

create table tb_aluno_disciplina (
    id_aluno_disciplina integer constraint aluDisc_id_pk primary key, 
    id_aluno integer, 
    id_disciplina integer, 
    constraint aluDisc_idA_fk foreign key (id_aluno) references tb_aluno(id_aluno), 
    constraint aluDisc_idD_fk foreign key (id_disciplina) references tb_disciplina(id_disciplina)
);

Valeu Rômulo! Obrigado.