sql >> Database >  >> RDS >> Oracle

Hoe krijg ik gegenereerde sleutels van JDBC batch-insert in Oracle?

De JDBC 4.1-specificatie, sectie 13.6 Automatisch gegenereerde waarden ophalen zegt:

Het is door de implementatie gedefinieerd of getGeneratedKeys retourneert gegenereerde waarden na het aanroepen van de executeBatch methode.

U moet dus controleren of uw stuurprogramma dit daadwerkelijk ondersteunt voor batch-updates. Zoals aangegeven in het antwoord van Philip O., wordt het ophalen van gegenereerde sleutels niet ondersteund met batchupdates zoals gedocumenteerd in Oracle 12 JDBC Standards Support:

U kunt automatisch gegenereerde sleutels niet combineren met batchupdate.

In ieder geval, als het wordt ondersteund door uw chauffeur, moet uw verklaring voorbereiden worden gewijzigd in de onderstaande code om de chauffeur te instrueren om gegenereerde sleutels op te halen:

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

Opmerking:u moet mogelijk een van de andere voorbereidingsmethoden voor gegenereerde sleutels gebruiken (prepareStatement(sql, columnIndexes) of prepareStatement(sql, columnNames) ) aangezien Oracle de ROW_ID . teruggeeft met de methode in mijn voorbeeld.



  1. ABS() Functie in Oracle

  2. Hoe kan ik een http-verzoek verzenden vanuit de postgresql-functie of trigger?

  3. Gegoten van VARCHAR naar INT - MySQL

  4. Leer databaseontwerp met SQL Server Management Studio (SSMS) - deel 2