Você pode usar um efeito colateral do
insert all
inserção de várias tabelas
sintaxe para isso: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
SQL Fiddle .
Das restrições:
Claramente estou usando uma sequência nos
values
cláusula, então a primeira frase não parece muito precisa; mas você não pode usá-lo no select
papel. (Não tenho 100% de certeza se pode ser usado nos values
em todas as versões, mas a documentação é um pouco enganosa em qualquer caso e se contradiz). Então, estou aproveitando o fato de que, por ser uma única instrução, as duas referências a
nextval
obter o mesmo número, como diz a terceira frase, então o mesmo valor de sequência é usado em ambas as tabelas.