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
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.