programing

Oracle - SQL - subselect로 삽입

css3 2023. 9. 12. 20:11

Oracle - SQL - subselect로 삽입

저는 지금.ORA-00947: not enough values아래 쿼리에서 다음과 같이 입력합니다.

insert into tableb
(colA, colb, colc, cold)
select
(select max(rec_no)+1 from tableb)
F2,
F3,
F4
from tablea;

삽입/선택 문에 대한 하위 쿼리를 포함하는 올바른 방법을 알려줄 수 있습니까?

감사해요.

쉼표 하나를 놓쳤을 뿐입니다.현 상태에서 오라클은 생각합니다.F2는 하위 선택 항목의 이름입니다.

insert into tableb
(colA, colb, colc, cold)
select
(select max(rec_no)+1 from tableb) ,   -- comma here
F2,
F3,
F4
from tablea;

고유 ID를 생성하는 유일한 방법은 시퀀스를 사용하는 것입니다.

그 이유는.max()"message"는 작동하지 않습니다. 트랜잭션이 다른 트랜잭션에서 커밋되지 않은 변경 사항을 보지 못합니다.따라서 두 개의 동시 트랜잭션이 동일한 값을 사용하게 될 수 있습니다.max()그러면 중복 ID 값이 생성됩니다.

해당 사례의 시퀀스에서 값을 생성하려면 먼저 시퀀스를 생성해야 합니다.

create sequence seq_b;

그런 다음 선택한 문장에서 이 순서를 사용합니다.

insert into tableb
  (colA, colb, colc, cold)
select seq_b.nextval,
       F2,
       F3,
       F4
from tablea;

언급URL : https://stackoverflow.com/questions/13838951/oracle-sql-insert-into-with-sub-select