Ir ao conteúdo
  • Cadastre-se

Posts recomendados

Postado

O banco todo em si está funcionando, mas ao tentar ativar a ultima linha gera este erro:

01:10:12    insert into Pedido (numPedido, codigoCliente, codigoVendedor, tipo, dataEmbarque, dataEntrega, valorTotal, desconto) values (1, 101, 5, 'À vista', '2017-01-12', '2017-02-12', 3000.00, 10)    Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`unidade1_atividade`.`pedido`, CONSTRAINT `pedido_ibfk_1` FOREIGN KEY (`codigoCliente`) REFERENCES `cliente` (`codigo`))    0.062 sec

 

O banco: 

create database banco_exempo;
use banco_exempo;

create table Cliente (
codigo int not null,
nome varchar(50),
endereco varchar(100),
cpf char(11) not null,
telefone char(11),
primary key(codigo)
);

create table Vendedor (
codigo int not null,
nome varchar(50),
salario decimal(7,2),
primary key(codigo)
);

create table Produto (
id int not null,
unidade char(3),
descricao varchar(50),
valorUnitario decimal(7,2),
primary key(id)
);

create table Pedido (
numPedido int not null,
prazoEntrega date,
codigoCliente int,
codigoVendedor int,
primary key(numPedido),
foreign key (codigoCliente) references Cliente(codigo),
foreign key (codigoVendedor) references Vendedor(codigo)
);

create table ItemPedido (
numeroPedido int not null,
idProduto int not null,
quantidade int,
primary key(numeroPedido),
foreign key(numeroPedido) references Pedido(numPedido),
foreign key(idProduto) references Produto(id)
);

create table Fabricante (
codFabricante int not null,
codProduto int not null,
primary key(codFabricante),
foreign key(codProduto) references Produto(codigo)
);

alter table Cliente add column tipo varchar(40);
alter table Cliente modify nome varchar(100);

alter table Vendedor change codigo id int not null;
alter table Vendedor add column telefone char(11);

alter table Pedido drop column prazoEntrega;
alter table Pedido add column tipo varchar(40);
alter table Pedido add column dataEmbarque date;
alter table Pedido add column dataEntrega date;
alter table Pedido add column valorTotal decimal(7,2);
alter table Pedido add column desconto decimal(7,2);
alter table Pedido modify desconto decimal(4,1) not null;

alter table Produto change id codigo int not null;
alter table Produto drop column unidade;
alter table Produto change descricao nome varchar(100);
alter table Produto change valorUnitario preco decimal(7,2);

insert into Pedido (numPedido, codigoCliente, codigoVendedor, tipo, dataEmbarque, dataEntrega, valorTotal, desconto) values (1, 101, 5, 'À vista', '2017-01-12', '2017-02-12', 3000.00, 10);


 

  • Moderador
Postado

@Lukinh4s Aparentemente  você tem problemas com suas chaves estrangeiras na tabela.

 

Eu recomendo que você refaça seu banco de dados e utilize o modo "designer" do mysql. Crie os relacionamentos por lá. Com suas tabelas devidamente criadas e com as indexes criadas de forma correta.

 

Eu tenho uns videos antigos sobre como criar tabelas e relacionamentos via mysql com o designer.  Apesar de ser "antigo" serve muito bem para novas versões do mysql. Coim esse método não vai ter problema algum.

 

 

 

  • Curtir 1
Postado

@DiF Eu agradeço, irei adotar a dica para ser usado futuramente. Mas infelizmente, esse bd específico tem que ser feito no MySQL Workbench entende?! 😕 

  • Moderador
Postado

@Lukinh4s Sim eu entendo, mas você deve saber que o  MySQL Workbench não é o banco de dados. ele é só um programa modelador. Você cria o modelo do banco e precisa "fazer um upload" para o mysql. 

 

De qualquer forma, o erro é relacionado as chaves estrangeiras.  revise o jeito que foi feito, provavelmente você cometeu algum erro usando o programa. e sim, muito já usei ele na faculdade e errar isso é bastante comum,, visto que tem varias formas de relacionamento, como por exemplo usar campos existentes ou inexistentes( nesse caso o campo de chave estrangeira é criado automaticamente pelo programa)

  • Obrigado 1
Postado

Parece que você está inserindo um pedido sem ter o cliente com codigo 101 cadastrado na tabela cliente. Por isso o erro de chave estrangeira. Primeiro insira o cliente e depois o pedido.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...