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.