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

Chèn nhiều hàng với trình tự trong Oracle

Các hạn chế đối với phụ trang nhiều bảng bao gồm:

  • Bạn không thể chỉ định một trình tự trong bất kỳ phần nào của câu lệnh chèn nhiều bảng. Chèn nhiều bảng được coi là một câu lệnh SQL đơn. Do đó, tham chiếu đầu tiên đến NEXTVAL tạo ra số tiếp theo và tất cả các tham chiếu tiếp theo trong câu lệnh đều trả về cùng một số.

Điều đó không hoàn toàn đúng - bạn có thể sử dụng một chuỗi, nó chỉ luôn nhận cùng một giá trị, vì vậy có thể hữu ích khi tạo các bản ghi mẹ và con trong một lần bằng cách tham chiếu đến cùng một chuỗi.

Nếu bạn muốn tiếp tục sử dụng insert all bạn có thể giải quyết vấn đề đó bằng cách sử dụng một hàm không xác định nhận giá trị chuỗi:

CREATE FUNCTION get_seq RETURN NUMBER IS
BEGIN
  RETURN postal_code_seq.nextval;
END;
/

INSERT ALL
  INTO POSTAL_CODE( postal_code,description)
    VALUES(get_seq,'Coimbatore')
  INTO POSTAL_CODE (postal_code,description)
    VALUES(get_seq,'Mumbai') SELECT * FROM DUAL;

2 rows inserted.

SELECT * FROM postal_code;

                            POSTAL_CODE DESCRIPTION        
--------------------------------------- --------------------
                                      1 Coimbatore          
                                      2 Mumbai              

Nhưng điều đó hơi khó xử. Bạn có thể tốt hơn nên sử dụng các câu lệnh chèn riêng lẻ - sử dụng chèn nhiều bảng vào một bảng duy nhất không thực sự mang lại lợi ích cho bạn nhiều - hoặc một trình kích hoạt để đặt cột duy nhất từ ​​chuỗi hoặc chế độ xem CTE / nội tuyến để tạo các giá trị để chèn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kiểm tra phiên bản JDK trong Oracle?

  2. Mệnh đề OVER trong Oracle

  3. Kết nối SQL Server với Oracle

  4. Cách xuất kết quả truy vấn sang tệp .txt khi sử dụng SQLcl (Oracle)

  5. Cách tiếp tục xử lý vòng lặp con trỏ sau ngoại lệ trong Oracle