sql >> Databáze >  >> RDS >> Oracle

Vkládání do dvou věšteckých tabulek se sekvencí

Můžete použít vedlejší účinek insert all vícestolová vložka syntaxe pro toto:

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 .

Z omezení:

Je zřejmé, že používám sekvenci v values klauzule, takže první věta se nezdá být zcela přesná; ale nemůžete jej použít v select část. (Nejsem si 100% jistý, jestli to lze použít v values ve všech verzích, ale dokumentace je v každém případě trochu zavádějící a protiřečí si).

Takže využívám skutečnosti, že protože se jedná o jediný příkaz, dva odkazy na nextval získat stejné číslo, jak říká třetí věta, takže v obou tabulkách je použita stejná sekvenční hodnota.



  1. Je Percona zpětně kompatibilní s MySQL? Případ Ruby in Rails

  2. Jak v JavaFX přidat combobox s daty v zobrazení tabulky

  3. Přidat vypočítaný sloupec do existující tabulky na serveru SQL Server

  4. Řešení chyby:v datech v Postgresu byl nalezen doslovný nový řádek?