본문 바로가기

Database/ORACLE

SELECT 결과를 INSERT 하기

SELECT 결과를 INSERT해야 하는 경우가 있다.

- 모든 컬럼을 입력하는 경우

INSERT INTO TO-BE
SELECT * FROM AS-IS

 

- 원하는 컬럼만 입력하는 경우

INSERT INTO TO-BE (COL1, COL2, COL3)
SELECT COL1, COL2, COL3
FROM AS-IS;

 

- WITH절과 함께 사용하는 경우

INSERT INTO TO-BE
WITH절
SELECT * FROM AS-IS;

 

참고사항으로 INSERT INTO ~ SELECT를 하는 경우 일련번호와 같은 컬럼 입력 시 MAX + 1의 형태로 사용하면
고정값(동일한 값)으로 입력이 되어 pk 에러가 발생한다.
따라서 이런 경우에는 SEQUENCE를 생성하여 seq_test.nextval과 같은 형태로 사용해야 한다.
예시)

INSERT INTO TO-BE (SEQ, NAME, AGE)
SELECT SEQ_TEST.nextval, A.NAME, A.AGE
FROM	AS-IS A;

 

'Database > ORACLE' 카테고리의 다른 글

sqlplus 원격 접속  (0) 2021.05.25