Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn vào hai bảng tiên tri với một chuỗi

Bạn có thể sử dụng tác dụng phụ của insert all chèn nhiều bảng cú pháp cho điều này:

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 .

Từ những hạn chế:

Rõ ràng là tôi đang sử dụng một chuỗi trong các giá trị values nên câu đầu tiên có vẻ không chính xác lắm; nhưng bạn không thể sử dụng nó trong select phần. (Tôi không chắc 100% liệu nó có thể được sử dụng trong các giá trị values không trong tất cả các phiên bản, nhưng tài liệu có một chút sai lệch trong mọi trường hợp và mâu thuẫn với chính nó).

Vì vậy, tôi đang tận dụng thực tế rằng vì nó là một câu lệnh duy nhất, hai tham chiếu đến nextval nhận được cùng một số, như câu thứ ba nói, vì vậy giá trị trình tự giống nhau được sử dụng trong cả hai bảng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu Oracle:Sử dụng DBMS_ALERT với ứng dụng java

  2. Làm thế nào để thực thi một thủ tục được lưu trữ trong một phiên khác trong cùng một thời điểm trong pl / sql

  3. Làm cách nào để sử dụng chỉ mục dựa trên hàm trên một cột có chứa NULL trong Oracle 10+?

  4. Các giá trị NULL ảnh hưởng đến hiệu suất trong tìm kiếm cơ sở dữ liệu như thế nào?

  5. Trường Oracle to SQL2005 DATETIME tràn trong SSIS