Можете да използвате страничен ефект на insert all
вмъкване на много таблици
синтаксис за това:
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
От ограниченията:
Ясно е, че използвам последователност в values
клауза, така че първото изречение не изглежда съвсем точно; но не можете да го използвате в select
част. (Не съм 100% сигурен дали може да се използва в values
във всички версии, но документацията във всеки случай е малко подвеждаща и си противоречи).
Така че се възползвам от факта, че тъй като това е един израз, двете препратки към nextval
получите същото число, както се казва в третото изречение, така че една и съща стойност на последователност се използва и в двете таблици.