Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Datenbank mit Java-JDBC-Primärschlüssel

Der korrekte Weg zum Abrufen Ihres Primärschlüssels ist die Verwendung von getGeneratedKeys Funktion (die mit Statement.RETURN_GENERATED_KEYS aktiviert werden kann Wert mit einem der Statement.execute* oder Connection.prepareStatement Methoden.

In den meisten Datenbanken kann dies verwendet werden, um den Primärschlüssel direkt abzurufen. Im Fall von Oracle können Sie damit jedoch die ROWID erhalten , diese ROWID kann verwendet werden, um die Tabelle nach der eingefügten Zeile abzufragen und den Primärschlüssel zu erhalten.

Zum Beispiel:

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);
        }
    }
}