Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để lấy các khóa được tạo từ chèn hàng loạt JDBC trong Oracle?

Đặc tả JDBC 4.1, phần 13.6 Lấy giá trị được tạo tự động nói:

Nó được triển khai định nghĩa là liệu getGeneratedKeys sẽ trả lại các giá trị sau khi gọi executeBatch phương pháp.

Vì vậy, bạn sẽ cần kiểm tra xem trình điều khiển của mình có thực sự hỗ trợ nó để cập nhật hàng loạt hay không. Như đã chỉ ra trong câu trả lời của Philip O., việc truy xuất các khóa đã tạo không được hỗ trợ với các bản cập nhật hàng loạt như được ghi trong Hỗ trợ tiêu chuẩn Oracle 12 JDBC:

Bạn không thể kết hợp các khóa được tạo tự động với cập nhật hàng loạt.

Trong mọi trường hợp, nếu nó được hỗ trợ bởi trình điều khiển của bạn hơn so với báo cáo của bạn, bạn nên thay đổi mã chuẩn bị thành mã bên dưới để hướng dẫn người lái xe truy xuất các khóa đã tạo:

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

Lưu ý:bạn có thể cần sử dụng một trong các phương pháp chuẩn bị khóa được tạo khác (prepareStatement(sql, columnIndexes) hoặc prepareStatement(sql, columnNames) ) vì Oracle sẽ trả về ROW_ID với phương pháp trong ví dụ của tôi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Số ngày giữa hai ngày và Loại trừ các ngày trong tuần cách xử lý số âm

  2. SSIS không thể lưu các gói và khởi động lại Visual Studio

  3. Hibernate không thể tìm nạp SequenceInformation từ cơ sở dữ liệu

  4. Oracle:Nếu bảng tồn tại

  5. Truy xuất IDENTITY được chèn lần cuối của Oracle