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.