Tenho um sistema de controle de livros feito com vraptor 3.5.
Neste sistema, o formulário para cadastrar livros.
Nome do livro, ISBN, NR de páginas …
Nesse formulário eu tenho um campo para localizar a editora.
Aí me vem a seguinte dúvida: não encontro a editora e queria apresentar um botão pra cadastrar a editora.
Mas como faço para após cadastrar a editora, ainda permanecer no formulário de cadastro de livros sem perder os dados já preenchidos e no campo buscar editora, encontrar a editora cadastrada?
Seria isso no mesmo formulário de cadastro de livros. Não sei se consegui ser claro na dúvida.
Você pode fazer isso perfeitamente.
Não tem qualquer problema.
Na ação do botão de cadastro de editoras, após concluir o cadastro, você deve buscar no banco o ultimo ID cadastrado na tabela de editoras.
A sintaxe varia conforme o banco… Exemplo em Oracle: select id from editora where rownum = 1 order by id desc
Alguma coisa assim.
Com o ID na mão você segue a vida.
O problema de pegar o ID dessa forma é q se mais pessoas estiverem cadastrando ao mesmo tempo vc corre o risco de pegar o ID errado.
O ideal é ver a solução nativa de cada banco, no postgres por exemplo, vc pode fazer o insert e passar “returning …” no final e escolher quais campos deseja retornar
Pode ser também
Mas acredito que o cadastro seja feito dentro de uma transaction, então é só fazer o select dentro da mesma transaction… Antes de commitar.
Então não seria possível no mesmo formulário que estou cadastrando um livro, ao me deparar que não existe a editora, cadastrar a mesma e sem perder os dados já digitados do livro, pegar o id da editora cadastrada?
E se eu fizesse por Ajax? Exemplo:
Preenchi os dados do livro, no campo editora digito o nome dá editora, recebi msg de editora não cadastrada, aí clico no botão adicionar editora, faço o cadastro, o form da editora é fechado e ainda com o formulário do livro a ser cadastrado, digito o nome dá editora?
Será que é o correto?
Att
Depende do banco de dados no , mysql vc usa
SELECT LAST_INSERT_ID();
Logo após o INSERT
Ele retorna o último auto incremente do insert que VOCÊ fez.
Já no sqlserver vc consegue recuperar ele no próprio INSERT.