Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere le chiavi generate dall'inserimento batch JDBC in Oracle?

La specifica JDBC 4.1, sezione 13.6 Recupero dei valori generati automaticamente dice:

È definito dall'implementazione se getGeneratedKeys restituirà i valori generati dopo aver invocato executeBatch metodo.

Quindi dovrai verificare se il tuo driver lo supporta effettivamente per gli aggiornamenti batch. Come indicato nella risposta di Philip O., il recupero delle chiavi generate non è supportato con gli aggiornamenti batch come documentato in Oracle 12 JDBC Standards Support:

Non puoi combinare chiavi generate automaticamente con l'aggiornamento batch.

In ogni caso, se è supportato dal tuo autista, la tua dichiarazione prepara dovrebbe essere modificata nel codice seguente per istruire il conducente a recuperare le chiavi generate:

ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);

Nota:potrebbe essere necessario utilizzare uno degli altri metodi di preparazione delle chiavi generati (prepareStatement(sql, columnIndexes) o prepareStatement(sql, columnNames) ) poiché Oracle restituirà il ROW_ID con il metodo nel mio esempio.