sql >> Database >  >> RDS >> Oracle

Invoegen in twee orakeltabellen met een reeks

U kunt een neveneffect gebruiken van de insert all multi-tafel insert syntaxis hiervoor:

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 .

Van de beperkingen:

Het is duidelijk dat ik een reeks gebruik in de values clausule, dus de eerste zin lijkt niet helemaal nauwkeurig; maar je kunt het niet gebruiken in de select een deel. (Ik weet niet 100% zeker of het kan worden gebruikt in de values in alle versies, maar de documentatie is hoe dan ook een beetje misleidend en spreekt zichzelf tegen).

Dus ik maak gebruik van het feit dat, omdat het een enkele verklaring is, de twee verwijzingen naar nextval krijg hetzelfde nummer, zoals de derde zin zegt, dus dezelfde reekswaarde wordt in beide tabellen gebruikt.



  1. IN vs ELKE operator in PostgreSQL

  2. Voorkom nummerconflicten met Microsoft SQL-reeksen

  3. Hoe configureer ik Rails voor wachtwoordloze toegang tot een externe database?

  4. Alles wat u moet weten over coderingsstandaarden voor SQL-query's