Para evitar que eu pule numeros na sequence, eu criei uma trigger assim:
String TRIGGER="CREATE OR REPLACE TRIGGER CLIENT_TRIGGER"+
" BEFORE INSERT ON CLIENT FOR EACH ROW"+
" BEGIN "+
" SELECT CLIENTSEQ.NEXTVAL INTO :NEW.ID FROM DUAL; "+
"END;";
Mas ao criar um cliente isso vai na primeira execução:
Entrou no insert:
ID do CLIENT após o insert:2
E na segunda vez:
Entrou no insert:
ID do CLIENT após o insert:4
Meu insert:
try{ int sequence=0;
stmt = this.connection.prepareStatement("SELECT CLIENTSEQ.NEXTVAL FROM DUAL");
ResultSet result = stmt.executeQuery();
if (result.next()) {
sequence=(int)result.getLong(1);
} else {
System.out.println("primary-key não encontrada!");
throw new SQLException("PK not found!");
}
result.close();
stmt.clearParameters();
stmt = (PreparedStatement) this.connection.prepareStatement(INSERT);
System.out.println("Entrou no insert:");
stmt.setInt(1, sequence);
stmt.setString(2, obj.getName());
stmt.executeUpdate();
stmt.close();
}catch(Exception e){
throw new RuntimeException(e);
}
CREATE SEQUENCE CLIENTSEQ INCREMENT BY 1
como eu recupero o ID:
//faz o insert do Client
new ClientDao().insert(c);
//pega o id do último registro
int id_c=new DBUtils().getSequence(Conexao.getConnection(),"SELECT CLIENTSEQ.CURRVAL FROM DUAL");
System.out.println("ID do CLIENT após o insert:"+id_c);
Porquê isso ocorre(de pular de 2 em 2)?Como resolver?