Vous pouvez utiliser un effet secondaire du insert all
insert multitable
syntaxe pour ceci :
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
Parmi les restrictions :
J'utilise clairement une séquence dans les values
clause, donc la première phrase ne semble pas tout à fait exacte ; mais vous ne pouvez pas l'utiliser dans le select
partie. (Je ne suis pas sûr à 100 % s'il peut être utilisé dans les values
dans toutes les versions, mais la documentation est de toute façon un peu trompeuse, et se contredit).
Je profite donc du fait que, comme il s'agit d'une seule instruction, les deux références à nextval
obtenez le même nombre, comme le dit la troisième phrase, donc la même valeur de séquence est utilisée dans les deux tables.