Problema ao fazer a ligação entre tabelas utilizando uma Foreign key

3 respostas Resolvido
J
Boa tarde, estou com um pequeno problema ao fazer a ligação entre as tabelas, preciso ligar a tabela de atleta e fazer a ligação com a tabela do orgão expedidor de documento.

Aparece o seguinte erro quando tento criar a tabela de atleta

Error code 1215. Cannot add foreign key constraint.

Eu criei  criei a tabela modalidade, naipe e orgao_ex.

Se alguém puder me falar qual o erro agradeço.

Segue abaixo as queries.

CREATE TABLE modalidade (

id INT NOT NULL PRIMARY KEY auto_increment,

nome VARCHAR(50) NOT NULL,

CONSTRAINT uk_id UNIQUE (id)

)  ENGINE=INNODB;
CREATE TABLE naipe (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

nome VARCHAR(50) NOT NULL,

CONSTRAINT uk_id UNIQUE (id)

)  ENGINE=INNODB;
CREATE TABLE competicao (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

modalidade INT NOT NULL,

naipe INT NOT NULL,

inicio DATETIME,

fim DATETIME,

CONSTRAINT uk_id UNIQUE (id),

CONSTRAINT fk_modalidade FOREIGN KEY (modalidade)

REFERENCES modalidade,

CONSTRAINT fk_naipe FOREIGN KEY (naipe)

REFERENCES naipe

)  ENGINE=INNODB;
CREATE TABLE relac_atleta (

competicao INT NOT NULL PRIMARY KEY,

atleta INT NOT NULL,

CONSTRAINT uk_competicao UNIQUE (compteticao),

CONSTRAINT uk_atleta UNIQUE (atleta),

CONSTRAINT fk_competicao FOREIGN KEY (competicao)

REFERENCES competicao,

constraint fk_atleta foreign key (atleta)

references atleta

)  ENGINE=INNODB;
CREATE TABLE orgao_exp (

id INT NOT NULL PRIMARY KEY,

descricao VARCHAR(200) NOT NULL,

sigla VARCHAR(15),

CONSTRAINT _uk_id UNIQUE (id)

)  ENGINE=INNODB;
CREATE TABLE atleta (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

nome VARCHAR(60) NOT NULL,

rg VARCHAR(20) NOT NULL,

orgao INT NOT NULL,

uf_rg CHAR(2) NOT NULL,

nascimento DATE NOT NULL,

CONSTRAINT fk_orgao FOREIGN KEY (orgao)

REFERENCES orgao_exp (orgao)	

)  ENGINE=INNODB;

3 Respostas

J
Solucao aceita

Não existe a coluna orgao na tabela orgao_exp.

O correto seria:

CONSTRAINT fk_orgao FOREIGN KEY(orgao)
REFERENCES orgao_exp(id)
J

Um outro detalhe que observei, tu não precisa criar restrições UNIKE para as colunas ID que são PK, por padrão toda PRIMARY KEY já é UNIKE.

J

Agradeço pelo seu tempo e por ter respondido a pergunta.
Transformei em uma UNIKE pois foi uma dica do professor, ontem na aula explicou sobre isso.

Criado 3 de março de 2020
Ultima resposta 4 de mar. de 2020
Respostas 3
Participantes 2