Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir les clés générées à partir de l'insertion de lots JDBC dans Oracle ?

La spécification JDBC 4.1, section 13.6 Récupération des valeurs générées automatiquement dit :

Il est défini par l'implémentation si getGeneratedKeys renverra les valeurs générées après avoir appelé le executeBatch méthode.

Vous devrez donc vérifier si votre pilote le prend réellement en charge pour les mises à jour par lots. Comme indiqué dans la réponse de Philip O., la récupération des clés générées n'est pas prise en charge avec les mises à jour par lots, comme indiqué dans Oracle 12 JDBC Standards Support :

Vous ne pouvez pas combiner les clés générées automatiquement avec la mise à jour par lot.

Dans tous les cas, s'il est pris en charge par votre pilote, votre préparation de déclaration doit être remplacée par le code ci-dessous pour demander au pilote de récupérer les clés générées :

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

Remarque :vous devrez peut-être utiliser l'une des autres méthodes de préparation des clés générées (prepareStatement(sql, columnIndexes) ou prepareStatement(sql, columnNames) ) car Oracle renverra le ROW_ID avec la méthode de mon exemple.