[RESOLVIDO] - Erro ao adicionar tabela com foreign keys

2 respostas
D

Boa noite.
Estou criando um banco de dados em mysql no workbench. Estava dando tudo certo, todas as querys sem nenhum erro, mas na criação da tabela votacao recebi o seguinte erro:

Error Code: 1215. Cannot add foreign key constraint 1,076 sec

Essa é a query:

create table votacao(

num_zona int,

num_secao int,

num_candidato int,

qtd_votos int,

constraint fk_votacao_zona foreign key(num_zona) references zona_secao(num_zona),

constraint fk_votacao_secao foreign key(num_secao) references zona_secao(num_secao),

constraint fk_votacao_candidato foreign key(num_candidato) references candidato(num_candidato)

);

As querys que deram certo, sem nenhum erro, são essas:

create table zona_secao(
num_zona int not null,
num_secao int not null,
nome_zona_secao varchar(50) not null,
qtd_eleitores int not null
);

create table candidato(

num_candidato int not null auto_increment,

cod_cargo int,

cod_partido int,

nome_candidato varchar(50) not null,

primary key(num_candidato),

constraint fk_candidato_cargo foreign key(cod_cargo) references cargo(cod_cargo),

constraint fk_candidato_partido foreign key(cod_partido) references partido(cod_partido)

);

Algém que manja pode me ajudar por favor. Desde já agradeço!

2 Respostas

P

Nada na tabela zona_seccao te garante que num_zona é único. O mesmo para num_seccao.
Na realidade acredito que nenhuma dessas colunas por si só vá ser única, mas sim o conjunto das duas.

Tens de ter uma PK na tabela zona_seccao com estas duas colunas e depois ter uma única FK sobre as duas colunas na tabela votacao para a tabela zona_seccao .

D

Valew Pela dica cara! Obrigado.
Consegui resolver da forma que você indicou, criei uma chave primária composta na tabela zona_secao, e apenas uma chave estrangeira na tabela votacao.

Obrigado!

Criado 27 de março de 2016
Ultima resposta 31 de mar. de 2016
Respostas 2
Participantes 2