GARANTIR DESCONTO

Fórum Insert mySql #508340

24/01/2015

0

Olá pessoal,

Estou programando em java e preciso de uma ajudinha no MySql:

Minha dúvida é: Preciso inserir 1 linha de registro na tabela PAI, e varias linha de registro na tabela filha, relacionada com a pai.

Neste caso seria:

TABELA_CABEÇALHO_PEDIDO( uma linha. No caso o pedido, seria auto_increment);
TABELA_ITENS_PEDIDO(para cada linha dos itens do pedido, seria associado com o pedido na tebela pai).

Imaginei que uma Trigger resolva isso!

Aguardo ajuda!
Eric Clauber

Eric Clauber

Responder

Posts

24/01/2015

Eduardo Pessoa

Um insert comum não funciona?
Responder

Gostei + 0

24/01/2015

Ronaldo Lanhellas

Olá pessoal,

Estou programando em java e preciso de uma ajudinha no MySql:

Minha dúvida é: Preciso inserir 1 linha de registro na tabela PAI, e varias linha de registro na tabela filha, relacionada com a pai.

Neste caso seria:

TABELA_CABEÇALHO_PEDIDO( uma linha. No caso o pedido, seria auto_increment);
TABELA_ITENS_PEDIDO(para cada linha dos itens do pedido, seria associado com o pedido na tebela pai).

Imaginei que uma Trigger resolva isso!

Aguardo ajuda!


Resolve mas não creio que seja a melhor solução, o melhor é você fazer essa lógica no seu código.
Responder

Gostei + 0

24/01/2015

Eduardo Pessoa

Seria uma seleção complexa Ronaldo?
Responder

Gostei + 0

24/01/2015

Ronaldo Lanhellas

Seria uma seleção complexa Ronaldo?


No meu ponto de vista as inserções hierárquicas devem ser feitas no próprio sistema, onde toda lógica de negócio deve estar. Não que seja complexo.
Responder

Gostei + 0

24/01/2015

Ronaldo Lanhellas

Seria uma seleção complexa Ronaldo?


No meu ponto de vista as inserções hierárquicas devem ser feitas no próprio sistema, onde toda lógica de negócio deve estar. Não que seja complexo.
Responder

Gostei + 0

25/01/2015

Marisiana Battistella

Sugiro que crie duas procedures, uma para inserção do pedido e outra para a inserção dos itens.
Inserir o pedido:
* A procedure deverá receber como parâmetros as informações referentes ao pedido e realizar a inserção.
* Após o INSERT, você e deve verificar se ocorreu erro: Se ocorreu retorna uma mensagem ao usuário; Senão retorna o código do pedido inserido. Isso pode ser feito utilizando os EXCEPTION da linguagem SQL.

Na aplicação você deverá chamar a procedure passando por parâmetro as informações do pedido.
Depois disso, verificar se o retorno foi erro ou se foi OK, Se inseriu o pedido corretamente, pega o número do pedido retornado e chama a procedure que vai inserir os itens.

Inserir itens do pedido:
* A procedure deverá receber como parâmetro as informações referentes ao item do pedido e realizar a inserção dele.
* Utilizar EXCEPTION para verificar se a inserção foi realizada corretamente.
Responder

Gostei + 0

25/01/2015

Eric Clauber

Um insert comum não funciona?


de certa forma sim, mas o problema é pegar o numero do pedido para a tabela pai e inserir, para cada item da tabela filha. seriam 2 inserts
Responder

Gostei + 0

25/01/2015

Eric Clauber

Olá pessoal,

Estou programando em java e preciso de uma ajudinha no MySql:

Minha dúvida é: Preciso inserir 1 linha de registro na tabela PAI, e varias linha de registro na tabela filha, relacionada com a pai.

Neste caso seria:

TABELA_CABEÇALHO_PEDIDO( uma linha. No caso o pedido, seria auto_increment);
TABELA_ITENS_PEDIDO(para cada linha dos itens do pedido, seria associado com o pedido na tebela pai).

Imaginei que uma Trigger resolva isso!

Aguardo ajuda!


Resolve mas não creio que seja a melhor solução, o melhor é você fazer essa lógica no seu código.



Opa,

é que assim, pensei em questao de desempenho, por isso to querendo fazer pelo banco. Mas assim, meu conhecimento em java é básico, estou quebrando a cabeça aqui. Se você tiver algum código que me ajude, agradeço. Nesta questão há outra dúvida. Como gerarei o numero do novo pedido sem consultar no banco, ou sejam. Passa isso tenho que saber o numero do ultimo pedido no banco e acrescentar mais 1. Há algum código que substitua isso??
Responder

Gostei + 0

25/01/2015

Eric Clauber

Sugiro que crie duas procedures, uma para inserção do pedido e outra para a inserção dos itens.
Inserir o pedido:
* A procedure deverá receber como parâmetros as informações referentes ao pedido e realizar a inserção.
* Após o INSERT, você e deve verificar se ocorreu erro: Se ocorreu retorna uma mensagem ao usuário; Senão retorna o código do pedido inserido. Isso pode ser feito utilizando os EXCEPTION da linguagem SQL.

Na aplicação você deverá chamar a procedure passando por parâmetro as informações do pedido.
Depois disso, verificar se o retorno foi erro ou se foi OK, Se inseriu o pedido corretamente, pega o número do pedido retornado e chama a procedure que vai inserir os itens.

Inserir itens do pedido:
* A procedure deverá receber como parâmetro as informações referentes ao item do pedido e realizar a inserção dele.
* Utilizar EXCEPTION para verificar se a inserção foi realizada corretamente.


Opa, obrigado!

Creio que a solução esteja aqui. Vou quebrar a cabeça aqui. Se tiver algum código que me de uma luz, agradeço!
Responder

Gostei + 0

26/01/2015

Marisiana Battistella

Por nada!
Não é recomendado utilizar trigger em inserções, alterações e exclusões de dados.
Tudo o que puder ser tratado atráves de procedures e functions, assim deve ser feito.
Responder

Gostei + 0

30/01/2015

Daniel Volpato

Olá pessoal,

Estou programando em java e preciso de uma ajudinha no MySql:

Minha dúvida é: Preciso inserir 1 linha de registro na tabela PAI, e varias linha de registro na tabela filha, relacionada com a pai.

Neste caso seria:

TABELA_CABEÇALHO_PEDIDO( uma linha. No caso o pedido, seria auto_increment);
TABELA_ITENS_PEDIDO(para cada linha dos itens do pedido, seria associado com o pedido na tebela pai).

Imaginei que uma Trigger resolva isso!

Aguardo ajuda!


Pode refazer melhor sua pergunta!
Estes insert's que você quer fazer é através da tua aplicação java, certo??
Tuas tabelas no MySql possuem classes e relacionamentos na tua aplicação java??
Esta utilizando JDBC puro ou algum Framework de persistência (tipo Hibernate, Eclipselink, ...)?
Responder

Gostei + 0

30/01/2015

Eric Clauber

Olá pessoal,

Estou programando em java e preciso de uma ajudinha no MySql:

Minha dúvida é: Preciso inserir 1 linha de registro na tabela PAI, e varias linha de registro na tabela filha, relacionada com a pai.

Neste caso seria:

TABELA_CABEÇALHO_PEDIDO( uma linha. No caso o pedido, seria auto_increment);
TABELA_ITENS_PEDIDO(para cada linha dos itens do pedido, seria associado com o pedido na tebela pai).

Imaginei que uma Trigger resolva isso!

Aguardo ajuda!


Pode refazer melhor sua pergunta!
Estes insert's que você quer fazer é através da tua aplicação java, certo??
Tuas tabelas no MySql possuem classes e relacionamentos na tua aplicação java??
Esta utilizando JDBC puro ou algum Framework de persistência (tipo Hibernate, Eclipselink, ...)?


Opa amigo as respostas sao...
Sim,
Sim,
e JDBC puro.
Responder

Gostei + 0

31/01/2015

Daniel Volpato

Olá pessoal,

Estou programando em java e preciso de uma ajudinha no MySql:

Minha dúvida é: Preciso inserir 1 linha de registro na tabela PAI, e varias linha de registro na tabela filha, relacionada com a pai.

Neste caso seria:

TABELA_CABEÇALHO_PEDIDO( uma linha. No caso o pedido, seria auto_increment);
TABELA_ITENS_PEDIDO(para cada linha dos itens do pedido, seria associado com o pedido na tebela pai).

Imaginei que uma Trigger resolva isso!

Aguardo ajuda!


Pode refazer melhor sua pergunta!
Estes insert's que você quer fazer é através da tua aplicação java, certo??
Tuas tabelas no MySql possuem classes e relacionamentos na tua aplicação java??
Esta utilizando JDBC puro ou algum Framework de persistência (tipo Hibernate, Eclipselink, ...)?


Opa amigo as respostas sao...
Sim,
Sim,
e JDBC puro.


Já que é assim:

Acredito que voce tenha uma camada de persistencia(DAO, repositorio, ...).
Voce poderia por exemplo, na tua camada de serviços um método gerarPedido(Pedido p), onde seria implementado a gravaçao do cabecalho do pedido e depois os itens do pedido.

Algo do tipo:

Connection conn = ConnectionFactory.getConnection();
PedidoRepository rep = new PedidoRepository(conn);
rep.gravarPedido(pedido);
for (PedidoItem item : pedido.getItens()) {
    rep.gravarItem(item);
}
Responder

Gostei + 0

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

Aceitar