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

Memasukkan ke dalam dua tabel oracle dengan urutan

Anda dapat menggunakan efek samping dari insert all sisipan multi-tabel sintaks untuk ini:

insert all
into job (jobid, fileid, jobname)
values (jobidsequence.nextval, fileid, jobname)
into reference (jobid, reffileid)
values (jobidsequence.nextval, reffileid)
select  4660 as fileid, 'name' as jobname, 4391 as reffileid
from dual;

2 rows inserted.

select * from job;

     JOBID     FILEID JOBNAME  
---------- ---------- ----------
        42       4660 name       

select * from reference;

     JOBID  REFFILEID
---------- ----------
        42       4391 

SQL Fiddle .

Dari batasan:

Jelas saya menggunakan urutan dalam values klausa, jadi kalimat pertama tampaknya tidak cukup akurat; tetapi Anda tidak dapat menggunakannya di select bagian. (Saya tidak 100% yakin apakah itu dapat digunakan dalam values di semua versi, tetapi dokumentasinya sedikit menyesatkan dalam hal apa pun, dan bertentangan dengan dirinya sendiri).

Jadi saya mengambil keuntungan dari fakta bahwa karena ini adalah pernyataan tunggal, dua referensi ke nextval dapatkan nomor yang sama, seperti kalimat ketiga, jadi nilai urutan yang sama digunakan di kedua tabel.



  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 SQL:Menerima kesalahan 'tidak ada kunci unik atau kunci utama yang cocok' dan tidak tahu mengapa

  2. count(*) tidak dapat dipilih dalam PL/SQL

  3. Kueri sql pada rownum

  4. TO_DATE() Fungsi di Oracle

  5. Pilih klausul di dalam fungsi pl/sql mengembalikan nilai yang salah