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

Sử dụng trình tự Oracle để chèn id nhật ký vào 2 bảng từ jdbc?

Nói chung, chọn MAX(log_id) sẽ không cung cấp cho bạn cùng một giá trị mà logid_seq.nextval cung cấp. Giả sử rằng đây là một hệ thống nhiều người dùng, một số người dùng khác có thể đã chèn một hàng khác có log_id lớn hơn giá trị hơn hàng bạn vừa chèn trước khi truy vấn của bạn được thực thi.

Giả sử rằng cả INSERT các câu lệnh được chạy trong cùng một phiên, tùy chọn đơn giản nhất có lẽ là sử dụng logid_seq.currval trong INSERT thứ hai bản tường trình. currval sẽ trả về giá trị cuối cùng của chuỗi đã được trả lại cho phiên hiện tại, vì vậy nó sẽ luôn trả về cùng một giá trị được tạo bởi nextval gọi trong câu lệnh đầu tiên.

INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG) 
  VALUES( logid_seq.currval, ?, ? )

Ngoài ra, bạn có thể sử dụng RETURNING mệnh đề trong câu lệnh đầu tiên của bạn để tìm nạp giá trị trình tự vào một biến cục bộ và sử dụng giá trị đó trong INSERT thứ hai bản tường trình. Nhưng đó có lẽ là công việc nhiều hơn là chỉ sử dụng currval .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gọi thủ tục PL / SQL với bản ghi do người dùng xác định làm tham số IN của nó bằng cách sử dụng JDBC

  2. Không thể kết nối với Oracle DB nhận được lỗi là java.sql.SQLException:Io ngoại lệ:Bộ điều hợp mạng không thể thiết lập kết nối

  3. Rollback không hoạt động trong oracle bằng liquibase

  4. So sánh các ngày sử dụng Dynamic Action trên DatePicker Oracle Apex

  5. Hàm WIDTH_BUCKET () trong Oracle