Cách chính xác để truy xuất khóa chính của bạn là sử dụng getGeneratedKeys
cơ sở (có thể được kích hoạt bằng cách sử dụng Statement.RETURN_GENERATED_KEYS
giá trị bằng một trong các Statement.execute*
hoặc Connection.prepareStatement
phương pháp.
Trong hầu hết các cơ sở dữ liệu, điều này có thể được sử dụng để truy xuất khóa chính một cách trực tiếp. Tuy nhiên, trong trường hợp của Oracle, điều này sẽ cho phép bạn lấy ROWID
, ROWID
này có thể được sử dụng để truy vấn bảng cho hàng được chèn và lấy khóa chính.
Ví dụ:
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);
}
}
}