Oracle
 sql >> база данни >  >> RDS >> Oracle

Вмъкване в две оракулни таблици с последователност

Можете да използвате страничен ефект на 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 

SQL Fiddle .

От ограниченията:

Ясно е, че използвам последователност в values клауза, така че първото изречение не изглежда съвсем точно; но не можете да го използвате в select част. (Не съм 100% сигурен дали може да се използва в values във всички версии, но документацията във всеки случай е малко подвеждаща и си противоречи).

Така че се възползвам от факта, че тъй като това е един израз, двете препратки към nextval получите същото число, както се казва в третото изречение, така че една и съща стойност на последователност се използва и в двете таблици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на виртуална машина с Oracle VM Virtual Box

  2. Как да създадете дъмп с Oracle PL/SQL Developer?

  3. оракул за миграция към postgresql невалидна последователност от байтове за кодиране UTF8:0x00

  4. Извличане на данни от XML Clob с помощта на SQL от Oracle Database

  5. count(*) не може да бъде избран в PL/SQL