Cara yang benar untuk mengambil kunci utama Anda adalah dengan menggunakan getGeneratedKeys
fasilitas (yang dapat diaktifkan dengan menggunakan Statement.RETURN_GENERATED_KEYS
nilai dengan salah satu Statement.execute*
atau Connection.prepareStatement
metode.
Di sebagian besar database ini dapat digunakan untuk mengambil kunci utama secara langsung. Namun dalam kasus Oracle ini akan memungkinkan Anda untuk mendapatkan ROWID
, ROWID
ini dapat digunakan untuk menanyakan tabel untuk baris yang disisipkan dan mendapatkan kunci utama.
Misalnya:
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);
}
}
}