sql >> Databasteknik >  >> RDS >> Oracle

Infoga i två orakelbord med en sekvens

Du kan använda en bieffekt av infoga alla multi-table infoga syntax för detta:

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 .

Från begränsningarna:

Jag använder helt klart en sekvens i värdena klausul, så den första meningen verkar inte riktigt korrekt; men du kan inte använda den i select del. (Jag är inte 100 % säker på om det kan användas i värdena i alla versioner, men dokumentationen är lite missvisande i alla fall och motsäger sig själv).

Så jag drar fördel av det faktum att eftersom det är ett enda uttalande, hänvisar de två till nextval få samma nummer, som den tredje meningen säger, så samma sekvensvärde används i båda tabellerna.



  1. Kö i OneWay WCF-meddelanden med Windows Service och SQL Server

  2. Hur man ansluter sig till tabeller med ett antal datum utan att behöva ha procedurer

  3. IF skick Utför fråga, annars utför annan fråga

  4. Hur man väljer antalet värden grupperade efter intervall