Apos gravar na primeira tabela faça um select para obter o ultimo id e faça o insert na próxima tabela, OBS esse id precisa ser autoincrement, pois vou obter sempre o maior ou seja o ultimo,
Exemplo em MYSQL:
publicintultimoRegistro()throwsSQLException{sql="SELECT max(cod_cliente)as codigo FROM `cliente`";PreparedStatementstmt=this.connection.prepareStatement(sql);ResultSetrs=stmt.executeQuery();rs.next();intultimo=rs.getInt("codigo");System.out.println("ultimo "+ultimo);stmt.close();returnultimo;}
Beleza, eu achei no google tb, muito obrigado pela resposta!
Maniezo
Pedrosa,
Nesse seu exemplo pode dar problema! Imagine varios insert acontecendo ali simultaneos… pode acontecer de alguem tentar inserir um cod_cliente que ja esta no banco porque outro acesso foi mais rapido…
Pedrosa
Exatamente, nesse caso precisamos criar métodos sincronizados, ou existe alguma outra forma de pegar o registro 100% certo?
Maniezo
É Pedrosa ta certo…
Mas achei meio estranho… não sei uma solução mesmo…
Não sei se java tem algo do tipo (não sou expert) mas no PHP tem um esquema legal pra isso:
$query=mysql_query("insert");$id=mysql_insert_id();// Aqui retorna o id que foi inserido//facilita pra inserir na proxima tabela
Se souber como fazer isso no JAVA vai me ajudar tambem!
Valew!
FSRech
eu vou usar isto que achei no FAQ do postgreSQL
Alternativamente,vocêpoderiaobterovalorSERIALatribuídocomafunçãocurrval()depoisdetê-loinseridoporpadrão,i.e.,execute("INSERT INTO pessoa (nome) VALUES ('Blaise Pascal')");novo_id=execute("SELECT currval('pessoa_id_seq')");