Możesz użyć efektu ubocznego insert all
wstawka wielostołowa
składnia tego:
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
Z ograniczeń:
Oczywiście używam sekwencji w values
klauzula, więc pierwsze zdanie nie wydaje się całkiem dokładne; ale nie możesz go użyć w select
część. (Nie jestem w 100% pewien, czy można go użyć w values
we wszystkich wersjach, ale dokumentacja jest nieco myląca i jest sprzeczna sama w sobie).
Korzystam więc z faktu, że ponieważ jest to pojedyncza instrukcja, dwa odniesienia do nextval
uzyskaj tę samą liczbę, jak mówi trzecie zdanie, więc ta sama wartość sekwencji jest używana w obu tabelach.