Fórum Coluna referenciada #446563

24/06/2013

0

Galera a situação é a seguinte, eu tenho duas tabelas. Uma que se origina de um relacionamento N..N (tabela A) e outra que recebe referencia da tabela N..N (tabela B). Como eu faço para a minha segunda tabela (tabela B) receber as chaves compostas da tabela A?

Depois da tabela criada eu tento passar as chaves através do comando "alter"...

  ALTER TABLE tabelaB
    ADD constraint fk_codAluno FOREIGN KEY(codAluno) REFERENCES tabelaA(codAluno);

  ALTER TABLE tabelaB
    ADD constraint fk_codProf FOREIGN KEY(codProf) REFERENCES tabelaA(codProfissional);


...mas o seguinte erro aparece no momento que eu executo o primeiro ALTER TABLE:

não há restrição de unicidade que corresponde com as colunas informadas na tabela referenciada "tabelaA"
Marcus Almeida

Marcus Almeida

Responder

Posts

25/06/2013

Marcelo Senaga

Como está declarada a tabela A?
Responder

Gostei + 0

26/06/2013

Marcus Almeida

Segue o código da tabela A:
create table CA(
  codProfissional integer not null,
  codAluno integer not null, 
  descricao varchar(50),
  constraint pk_CA    primary key(codProfissional, codAluno),
  constraint fk_Prof  foreign key(codProfissional) references profissional(codigo),
  constraint fk_Aluno foreign key(codAluno)        references aluno(codigo)
);



Na tabela B tenho o seguinte:
create table geraPrancha(
  codigo integer not null,
  codMidia integer not null,
  codAluno integer not null,
  codProf integer not null,
  dataCriacao date,
  path varchar(90) not null,
  constraint pk_geraPrancha primary key(codigo) 
);
Responder

Gostei + 0

03/07/2013

Marcelo Senaga

Conseguiu resolver?
Responder

Gostei + 0

06/07/2013

Marcus Almeida

Consegui sim, logo mais coloco a solução. Obrigado!
Responder

Gostei + 0

07/07/2013

Marcelo Senaga

Parabéns, tópico resolvido.
Responder

Gostei + 0

23/07/2014

Léo Rodrigues

sim, kd a solução da caso dessa sua tabela com fk. ??
quero ver a resposta correta.




Léo Rodrigues
Responder

Gostei + 0

29/07/2014

Ronaldo Lanhellas

Acho que nem é necessário esperar a resposta dele. Acontece que a "foreing key" não está referenciando a chave composto, o certo seria:

ALTER TABLE tabelaB
  ADD constraint fk_codAlunoCodProf FOREIGN KEY(codAluno, codProf) REFERENCES tabelaA(codAlun, codProf);


Se a tabela A não tiver essa chave, deve ter pelo menos uma chave burra (ID) para facilitar o relacionamento.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar