Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wstawianie do dwóch tabel wyroczni z sekwencją

Możesz użyć efektu ubocznego insert all wstawka wielostołowa składnia tego:

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 

Skrzypce SQL .

Z ograniczeń:

Oczywiście używam sekwencji w values klauzula, więc pierwsze zdanie nie wydaje się całkiem dokładne; ale nie możesz go użyć w select część. (Nie jestem w 100% pewien, czy można go użyć w values we wszystkich wersjach, ale dokumentacja jest nieco myląca i jest sprzeczna sama w sobie).

Korzystam więc z faktu, że ponieważ jest to pojedyncza instrukcja, dwa odniesienia do nextval uzyskaj tę samą liczbę, jak mówi trzecie zdanie, więc ta sama wartość sekwencji jest używana w obu tabelach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak naprawić Dostawca nie jest kompatybilny z wersją klienta Oracle?

  2. Jak zaimplementować bez przerw, przyjazne dla użytkownika identyfikatory w NHibernate?

  3. Głęboka aktualizacja Oracle SQL

  4. Nie można załadować pliku lub zestawu „Oracle.ManagedDataAccess.EntityFramework”

  5. Przekaż wartość przechowywaną w zmiennej PL/SQL do klauzuli IN