Sequence e Chave estrangeira

4 respostas
C

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???

Confuso ?!?!? :roll:

4 Respostas

J

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:

PreparedStatement stmt = conexao.prepareStatement("insert into tabela (nome) values (?)");

stmt.setString(1, "Jair");

stmt.executeUpdate();

ResultSet res = stmt.getGeneratedKeys();

res.next();

int id = 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

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:

PreparedStatement stmt = conexao.prepareStatement("insert into tabela (nome) values (?)");

stmt.setString(1, "Jair");

stmt.executeUpdate();

ResultSet res = stmt.getGeneratedKeys();

res.next();

int id = 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

Valeu pela dica!!! Vou fazer pelo valor máximo.

J

Ok, só pra garantir: você sabe os problemas que isso pode dar né?!

Criado 7 de agosto de 2006
Ultima resposta 7 de ago. de 2006
Respostas 4
Participantes 2