Můžete použít vedlejší účinek insert all
vícestolová vložka
syntaxe pro toto:
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 omezení:
Je zřejmé, že používám sekvenci v values
klauzule, takže první věta se nezdá být zcela přesná; ale nemůžete jej použít v select
část. (Nejsem si 100% jistý, jestli to lze použít v values
ve všech verzích, ale dokumentace je v každém případě trochu zavádějící a protiřečí si).
Takže využívám skutečnosti, že protože se jedná o jediný příkaz, dva odkazy na nextval
získat stejné číslo, jak říká třetí věta, takže v obou tabulkách je použita stejná sekvenční hodnota.