Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggunakan urutan Oracle untuk memasukkan id log ke dalam 2 tabel dari jdbc?

Secara umum, memilih MAX(log_id) tidak akan memberi Anda nilai yang sama dengan logid_seq.nextval asalkan. Dengan asumsi bahwa ini adalah sistem multi-pengguna, beberapa pengguna lain dapat menyisipkan baris lain dengan log_id yang lebih besar nilai dari baris yang baru saja Anda sisipkan sebelum kueri Anda dieksekusi.

Dengan asumsi bahwa keduanya INSERT pernyataan dijalankan dalam sesi yang sama, opsi paling sederhana mungkin menggunakan logid_seq.currval di INSERT kedua penyataan. currval akan mengembalikan nilai terakhir dari urutan yang dikembalikan ke sesi saat ini sehingga akan selalu mengembalikan nilai yang sama yang dihasilkan oleh nextval panggil pernyataan pertama.

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

Atau, Anda dapat menggunakan RETURNING klausa dalam pernyataan pertama Anda untuk mengambil nilai urutan ke dalam variabel lokal dan menggunakannya dalam INSERT kedua penyataan. Tapi itu mungkin lebih berhasil daripada sekadar menggunakan 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. Bagaimana cara meningkatkan ukuran buffer di Oracle SQL Developer untuk melihat semua catatan?

  2. Keamanan Basis Data di Oracle

  3. Urutan entitas tertentu

  4. Menguji fungsi Oracle to_date

  5. Cara menggunakan Oracle PL/SQL untuk membuat sepuluh tabel serupa dari tabel sumber Oracle yang diberikan