Puoi utilizzare un effetto collaterale del insert all
inserto multitavolo
sintassi per questo:
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
Dalle restrizioni:
Chiaramente sto usando una sequenza nei values
clausola, quindi la prima frase non sembra abbastanza accurata; ma non puoi usarlo nella select
parte. (Non sono sicuro al 100% se può essere utilizzato nei values
in tutte le versioni, ma la documentazione è comunque un po' fuorviante e si contraddice).
Quindi sto approfittando del fatto che, poiché si tratta di una singola istruzione, i due riferimenti a nextval
ottenere lo stesso numero, come dice la terza frase, quindi lo stesso valore di sequenza viene utilizzato in entrambe le tabelle.