sql >> Databasteknik >  >> RDS >> Oracle

Hur får man genererade nycklar från JDBC batchinlägg i Oracle?

JDBC 4.1-specifikationen, avsnitt 13.6 Hämta automatiskt genererade värden säger:

Det är implementeringsdefinierat om getGeneratedKeys kommer att returnera genererade värden efter att ha anropat executeBatch metod.

Så du måste kontrollera om din drivrutin verkligen stöder den för batchuppdateringar. Som indikeras i svaret av Philip O., stöds inte hämtning av genererade nycklar med batchuppdateringar som dokumenterats i Oracle 12 JDBC Standards Support:

Du kan inte kombinera automatiskt genererade nycklar med batchuppdatering.

I vilket fall som helst, om det stöds av din drivrutin, bör ditt förberedande uttalande ändras till koden nedan för att instruera föraren att hämta genererade nycklar:

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

Obs:du kan behöva använda en av de andra genererade nycklarna förberedelsemetoder (prepareStatement(sql, columnIndexes) eller prepareStatement(sql, columnNames) ) eftersom Oracle returnerar ROW_ID med metoden i mitt exempel.



  1. Room API - Hur hämtar man nyligen infogat genererat ID för entiteten?

  2. Få rad-ID för en SQLite FTS3-tabell

  3. Skicka e-post med bilagor i Oracle D2k, Oracle Forms 10g, Oracle Forms 6i

  4. SQL Server 2016:Importera data