Puede utilizar un efecto secundario del insert all
inserto multimesa
sintaxis para esto:
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
De las restricciones:
Claramente estoy usando una secuencia en los values
cláusula, por lo que la primera oración no parece muy precisa; pero no puedes usarlo en el select
parte. (No estoy 100% seguro de si se puede usar en los values
en todas las versiones, pero la documentación es un poco engañosa en cualquier caso y se contradice a sí misma).
Entonces aprovecho el hecho de que debido a que es una declaración única, las dos referencias a nextval
obtenga el mismo número, como dice la tercera oración, por lo que se usa el mismo valor de secuencia en ambas tablas.