Olá pessoal, estou usando o sequence para incrementar a minha chave primária chamada id.
Só que ao mesmo tempo que eu gravo está chave primária eu gravo a mesma na chave estrangeira de uma outra tabela, como posso fazer para pegar o valor dessa chave primária para poder gravar na chave estrangeira???
Tem um metodo na classe Statement que te retorna as chaves geradas, tem que testar aí pra ver se está implementado no seu driver, veja:
PreparedStatementstmt=conexao.prepareStatement("insert into tabela (nome) values (?)");stmt.setString(1, "Jair");stmt.executeUpdate();ResultSetres=stmt.getGeneratedKeys();res.next();intid=res.getInt(1);
Se não estiver implementado você pode usar outras opções como pegar o valor atual da sequence, mas isso pode dar problema, ou então pegar o proximo valor antes de inserir...
Confuso ?!?!? :roll:
J
jaireltonPJ
Tem um metodo na classe Statement que te retorna as chaves geradas, tem que testar aí pra ver se está implementado no seu driver, veja:
PreparedStatementstmt=conexao.prepareStatement("insert into tabela (nome) values (?)");stmt.setString(1, "Jair");stmt.executeUpdate();ResultSetres=stmt.getGeneratedKeys();res.next();intid=res.getInt(1);
Se não estiver implementado você pode usar outras opções como pegar o valor atual da sequence, mas isso pode dar problema, ou então pegar o proximo valor antes de inserir...
C
ChristielenPJ
Valeu pela dica!!! Vou fazer pelo valor máximo.
J
jaireltonPJ
Ok, só pra garantir: você sabe os problemas que isso pode dar né?!