Olá galera!
Gostaria de saber como eu posso fazer para pegar o último registro inserido no banco de dados?
Não posso usar o “SELECT MAX(ID)”, pois meu banco de dados é utilizado na rede e pode haver concorrência.
Utilizo o PostgreSQL 8.3
Grato!
Pegar o último registro no Banco de Dados
12 Respostas
Antes de inserir reserve a sequence pra você.
Exemplo:
int sequenceCliente = sequenceGenerator.next("cliente_seq");
JDBCUtil.execute("insert into cliente (id, nome) values (?,?)", sequenceCliente, "Fulano");
System.out.println("O ultimo cliente adicionado foi:" + sequenceCliente);
Você não ordenar sua pesquisa pelo campo e fazer que retorne somente um registro??
Vou testar depois eu posto o resultado!
Valeu!
Se esta utilizando postgre, por que não utiliza sequence?
O postgre te oferece isso!
Antes de inserir reserve a sequence pra você.
Exemplo:
int sequenceCliente = sequenceGenerator.next("cliente_seq"); JDBCUtil.execute("insert into cliente (id, nome) values (?,?)", sequenceCliente, "Fulano"); System.out.println("O ultimo cliente adicionado foi:" + sequenceCliente);
peerless, sequenceGenerator seria alguma classe do Java? Ou isto seria feito no SQL do postgre?
stmt.executeUpdate(strSQL,Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
Lá na verificação do sql faz o seguinte
será que isso vai lhe ajudar?
abrass
boa sorte

Antes de inserir reserve a sequence pra você.
Exemplo:
int sequenceCliente = sequenceGenerator.next("cliente_seq"); JDBCUtil.execute("insert into cliente (id, nome) values (?,?)", sequenceCliente, "Fulano"); System.out.println("O ultimo cliente adicionado foi:" + sequenceCliente);peerless, sequenceGenerator seria alguma classe do Java? Ou isto seria feito no SQL do postgre?
É só um exemplo, seria uma classe sua cuja finalidade seria recuperar a próxima sequence do banco.
se vc tiver usando PreparedStatementPô achei que seria a solução, mas o Postgre não suporta o retorno de chaves:( Teria uma outra forma?Se o banco suportar funciona, eu uso Java DB, já tive pau com concorrência e resolveustmt.executeUpdate(strSQL,Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys();
oi,
tente fazer o seguinte
abs
oi,tente fazer o seguinte
abs
Não funciona, o SGBD diz que sequence não existe, no entanto ela existe!
oi,
você não está confundindo o nome da seq não? se o problema fosse na função (currval) o erro seria outro.
dá uma lida no manual abaixo
http://www.postgresql.org/docs/8.1/interactive/functions-sequence.html