Insert mySql

MySQL

Java

24/01/2015

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

Curtidas 0

Respostas

Eduardo Pessoa

Eduardo Pessoa

24/01/2015

Um insert comum não funciona?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

24/01/2015

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.
GOSTEI 0
Eduardo Pessoa

Eduardo Pessoa

24/01/2015

Seria uma seleção complexa Ronaldo?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

24/01/2015

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.
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

24/01/2015

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.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

24/01/2015

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.
GOSTEI 0
Eric Clauber

Eric Clauber

24/01/2015

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
GOSTEI 0
Eric Clauber

Eric Clauber

24/01/2015

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??
GOSTEI 0
Eric Clauber

Eric Clauber

24/01/2015

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!
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

24/01/2015

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.
GOSTEI 0
Daniel Volpato

Daniel Volpato

24/01/2015

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, ...)?
GOSTEI 0
Eric Clauber

Eric Clauber

24/01/2015

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.
GOSTEI 0
Daniel Volpato

Daniel Volpato

24/01/2015

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);
}
GOSTEI 0
POSTAR