GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro ao criar tabela com chave estrangeira

mysql
Tags: #<Tag:0x00007fbf1c148c68>

#1

Eae galera.

Podem me ajudar? Na última tabela estou tentando colocar uma chave estrangeira, mas da o erro “#1215 - Cannot add foreign key constraint”.

Não entendi, pois na penúltima tabela estou fazendo a mesma coisa e funcionou…

CREATE TABLE Cliente(
ClienteID int not null auto_increment,
ClienteNome varchar (255) not null,
ClienteCPF char (255) not null,
ClienteSexo char (255) not null,
ClienteCidade varchar (255) not null,
ClienteUF char (2) not null,
ClienteCEP char (255) not null,
ClienteRua varchar (255) not null,
ClienteNumeroResidencia char (255) not null,
ClienteComplemento varchar (255),
ClienteBairro varchar (255) not null,
ClienteEmail varchar (255),
ClienteTelefone varchar (255) not null,
ClienteCelular varchar (255),
ClienteEnabled char (10),
primary key (ClienteID)
);

create table Produto (
ProdutoID int unsigned not null auto_increment,
ProdutoTitulo varchar (255) not null,
ProdutoAutor varchar (255) not null,
ProdutoEditora varchar (255) not null,
ProdutoAno char (4) not null,
ProdutoGenero char (255) not null,
ProdutoPreco float not null,
ProdutoQuantidade int not null,
ProdutoPaginas char (255) not null,
ProdutoEnabled char (10),
primary key (ProdutoID)
);

create table ItensVenda(
ItemVendaID int unsigned not null,
ProdutoID int unsigned not null,
ProdutoTitulo char (255) not null,
ProdutoQuantidade int not null,
foreign key (ProdutoID) references Produto (ProdutoID)
);

create table venda(
VendaID int unsigned not null auto_increment,
ItemVendaID int unsigned not null,
VendaCliente char (255)not null,
VendaCPF char (255) not null,
VendaData date,
VendaValorTotal float not null,
primary key (VendaID),
foreign key (ItemVendaID) references ItensVenda (ItemVendaID)
);


#2

Pergunta: por que você quer uma chave na tabela de Venda referenciando a tabela de ItensVenda?

Geralmente, vejo uma estrutura feita da forma inversa, ou seja, a tabela de ItensVenda é que teria uma chave apontando para a tabela de venda:

foreign key (ItemVendaID) references venda (VendaID)

Abraço.