La forma correcta de recuperar su clave principal es usar getGeneratedKeys
instalación (que se puede activar mediante el Statement.RETURN_GENERATED_KEYS
valor con uno de los Statement.execute*
o Connection.prepareStatement
métodos.
En la mayoría de las bases de datos, esto se puede usar para recuperar la clave principal directamente. Sin embargo, en el caso de Oracle, esto le permitirá obtener el ROWID
, este ROWID
se puede usar para consultar la tabla en busca de la fila insertada y obtener la clave principal.
Por ejemplo:
stmt.executeUpdate("INSERT INTO theTable(column1) VALUES ('a')",
Statement.RETURN_GENERATED_KEYS);
ResultSet keys = stmt.getGeneratedKeys();
int primaryKey = -1;
if (keys.next()) {
try (PreparedStatement keyStatement =
connection.prepareStatement("SELECT ID FROM theTable WHERE ROWID = ?")) {
keyStatement.setRowId(keys.getRowId(1));
try (ResultSet rs = keyStatement.executeQuery()) {
primaryKey = rs.getInt(1);
}
}
}