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 |
---|