시퀀스 값을 사용하여 여러 행을 Oracle에 삽입하려면 어떻게 해야 합니까?
이 답변에서 구문을 사용하면 하나의 문을 사용하여 여러 행을 삽입할 수 있습니다.
그러나 삽입하는 값 중 하나는 시퀀스에서 가져온 것입니다.
insert into TABLE_NAME
(COL1,COL2)
select MY_SEQ.nextval,'some value' from dual
union all
select MY_SEQ.nextval,'another value' from dual
;
실행하려고 하면 ORA-02287 오류가 나타납니다.다른 방법이 없을까요?아니면 INSERT 문구를 많이 사용해야 하나요?
편집:
시퀀스를 제외한 다른 모든 열에 대해 열 이름을 지정해야 하는 경우 원래 간결성이 손실되므로 그럴 가치가 없습니다.이 경우 여러 INSERT 문을 사용합니다.
이 방법은 다음과 같습니다.
insert into TABLE_NAME (COL1,COL2)
select my_seq.nextval, a
from
(SELECT 'SOME VALUE' as a FROM DUAL
UNION ALL
SELECT 'ANOTHER VALUE' FROM DUAL)
다음 시나리오에서는 시퀀스가 동작하지 않기 때문에 동작하지 않습니다.
- WHERE 절에서
- GROUP BY 또는 ORDER BY 절에서
- DISTINCT 절에서
- UNION, 크로스 또는 마이너스와 함께
- 서브쿼리에서
출처 : http://www.orafaq.com/wiki/ORA-02287
단, 이것은 기능합니다.
insert into table_name
(col1, col2)
select my_seq.nextval, inner_view.*
from (select 'some value' someval
from dual
union all
select 'another value' someval
from dual) inner_view;
시험해 보세요.
create table table_name(col1 varchar2(100), col2 varchar2(100));
create sequence vcert.my_seq
start with 1
increment by 1
minvalue 0;
select * from table_name;
insert into TABLE_NAME
(COL1,COL2)
WITH
data AS
(
select 'some value' x from dual
union all
select 'another value' x from dual
)
SELECT my_seq.NEXTVAL, x
FROM data
;
그게 당신이 원하는 거라고 생각하지만, 지금은 그걸 테스트할 수 있는 오라클에 접근할 수 없어요.
ORA-02287은 허용되지 않는 시퀀스를 사용할 때 발생합니다.
시퀀스를 사용할 수 없는 장소 중 다음을 시도하고 있는 것 같습니다.
서브쿼리에서
그래서 같은 문장에서 배수는 할 수 없는 것 같아요.
델이 제공하는 솔루션은 다음과 같습니다.
생성된 모든 행에 대해 시퀀스 값을 열에 삽입하려면 삽입 전 트리거를 생성하고 트리거에서 시퀀스 값을 가져와 열에 할당합니다.
삽입 시 트리거를 생성하여 올바른 시퀀스 번호를 추가할 수 있습니다.
이것은 작동하며 유니온 모두를 사용할 필요가 없습니다.
Insert into BARCODECHANGEHISTORY (IDENTIFIER,MESSAGETYPE,FORMERBARCODE,NEWBARCODE,REPLACEMENTDATETIME,OPERATORID,REASON)
select SEQ_BARCODECHANGEHISTORY.nextval, MESSAGETYPE, FORMERBARCODE, NEWBARCODE, REPLACEMENTDATETIME, OPERATORID, REASON
from (
SELECT
'BAR' MESSAGETYPE,
'1234567890' FORMERBARCODE,
'1234567899' NEWBARCODE,
to_timestamp('20/07/12','DD/MM/RR HH24:MI:SSXFF') REPLACEMENTDATETIME,
'PIMATD' OPERATORID,
'CORRECTION' REASON
FROM dual
);
언급URL : https://stackoverflow.com/questions/228221/how-can-i-insert-multiple-rows-into-oracle-with-a-sequence-value
'source' 카테고리의 다른 글
기능은 React 하위 기능으로 사용할 수 없습니다.이 문제는 렌더에서가 아니라 구성요소를 반환할 때 발생할 수 있습니다. (0) | 2023.03.21 |
---|---|
Wordpress에서 커스텀 사용자 역할 작성 방법 (0) | 2023.03.21 |
Wordpress: 포스트 미디어 라이브러리의 모든 이미지를 쿼리합니다. (0) | 2023.03.21 |
ASP.NET Core 3.0 [FromBody] 문자열 내용이 "JSON 값을 시스템으로 변환할 수 없습니다.스트링. (0) | 2023.03.21 |
JSON에서는 왜 각각의 이름이 인용됩니까? (0) | 2023.03.21 |