Đặ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ọiexecuteBatch
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.