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

Hvordan får man genererede nøgler fra JDBC batch-indsættelse i Oracle?

JDBC 4.1-specifikationen, afsnit 13.6 Hentning af automatisk genererede værdier siger:

Det er implementeringsdefineret om getGeneratedKeys vil returnere genererede værdier efter påkaldelse af executeBatch metode.

Så du bliver nødt til at kontrollere, om din driver faktisk understøtter den til batch-opdateringer. Som angivet i svaret af Philip O., understøttes hentning af genererede nøgler ikke med batchopdateringer som dokumenteret i Oracle 12 JDBC Standards Support:

Du kan ikke kombinere autogenererede nøgler med batchopdatering.

Under alle omstændigheder, hvis det understøttes af din driver, skal din erklæringsforberedelse ændres til koden nedenfor for at instruere chaufføren om at hente genererede nøgler:

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

Bemærk:Du skal muligvis bruge en af ​​de andre genererede nøgleforberedelsesmetoder (prepareStatement(sql, columnIndexes) eller prepareStatement(sql, columnNames) ), da Oracle returnerer ROW_ID med metoden i mit eksempel.



  1. Sådan opretter du tabel med begrænsning af fremmednøgle i SQL Server - SQL Server / TSQL vejledning del 66

  2. Beregning af medianen med en dynamisk markør

  3. DateTime2 vs DateTime i SQL Server

  4. Sådan omdøbes primær nøglebegrænsning for flere tabeller i SQL Server-databasen - SQL Server / TSQL vejledning del 64