문서유형ㅣ기술정보
분야ㅣ튜닝
적용제품버전ㅣTibero7.2.4
문서번호ㅣTTUTI029
개요
본 문서는 티베로 멀티 인서트(Multi Insert) 기능 사용을 위한 방법에 대해 안내합니다.
기능 정의
하나의 Insert 구문으로 여러 테이블에 데이터를 입력하는 방법입니다.
- 하나 이상의 테이블에 부질의로부터 계산된 ROW를 삽입할 수 있습니다.
- Insert 대상 데이터가 많을수록 성능적인 이점이 존재합니다.
multi_table_insert
| 구성요소 | 설명 |
|---|---|
| ALL into_clause | 예약어 ALL 다음에 여러 개의 into_clause를 사용하면 부질의의 결과 ROW에 대해서 각 into_clause를 한 번씩 수행한다. |
| values_clause | 삽입되는 ROW의 컬럼 값을 지정한다. subquery의 컬럼을 사용할 수 있다. 삽입할 컬럼 값의 나열 순서는 값을 삽입하고자 하는 컬럼과 같은 순서가 되어야 한다. 값을 삽입할 컬럼을 나열한 경우 같은 순서로 컬럼 값을 나열해야 하고, 값을 삽입할 컬럼을 나열하지 않은 경우 테이블 내에 정의된 컬럼 순서에 따라 컬럼 값을 나열해야 한다. |
| subquery | 부질의 결과 반환되는 모든 ROW를 삽입한다. 부질의를 통하여 컬럼 값을 삽입하는 경우 부질의 결과 반환되는 ROW의 컬럼의 개수 및 순서는 값을 삽입하고자 하는 컬럼의 개수 및 순서와 일치해야 한다. 부질의는 임의의 테이블, 뷰를 참조할 수 있으며, 삽입 대상이 되는 테이블 또는 뷰를 참조할 수도 있다. 삽입 대상 테이블 또는 뷰를 참조할 때는 별칭을 통하여 참조한다. |
| conditional_insert_clause | WHEN 조건절을 통하여 into_clause를 수행할지 안 할지를 판단한다. WHEN 조건절은 부질의의 select 리스트를 참조해야 하며, 하나의 multi_table_insert 는 최대 127개의 WHEN 절을 가질 수 있다. |
conditional_insert_clause
| 구성요소 | 설명 |
|---|---|
| ALL | ALL을 명시했을 경우 WHEN 조건절을 만족하는 모든 into_clause를 수행한다. ALL 또는 FIRST를 명시하지 않았을 경우 기본값은 ALL이다. |
| FIRST | FIRST를 명시했을 경우 WHEN 조건절을 만족하는 첫 번째 into_clause 하나만 수행하고 나머지 into_clause는 건너뛴다. |
| WHEN condition THEN | condition 부분에 조건을 명시한다. 조건을 만족할 경우 into_clause를 수행한다. |
| into_clause | 특정 컬럼에만 ROW를 삽입하고자 할 때 사용한다. |
| values_clause | 삽입되는 ROW의 컬럼 값을 지정한다. 삽입할 컬럼 값의 나열 순서는 값을 삽입하고자 하는 컬럼과 같은 순서가 되어야 한다. 값을 삽입할 컬럼을 나열한 경우 같은 순서로 컬럼 값을 나열해야 하고, 값을 삽입할 컬럼을 나열하지 않은 경우 테이블 내에 정의된 컬럼 순서에 따라 컬럼 값을 나열해야 한다. |
| ELSE | 어느 WHEN 조건절도 만족하지 못했다면 ELSE 절 뒤에 나온 into_clause를 수행한다. ELSE 절이 없을 경우에는 아무 일도 하지 않는다. |
주의
부 질의에 별칭을 지정할 수는 없습니다.
뷰 또는 원격(Remote) 테이블에는 수행될 수 없으며 로컬 테이블에만 수행할 수 있습니다.
방법
시나리오
첨부파일(티베로 multi insert 시나리오)을 참고합니다.
1. Unconditional INSERT ALL
다수의 INSERT 문을 모두 수행합니다.
주의
SELECT 결과를 여러 테이블에 INSERT 시, 데이터 타입이 일치해야 합니다.
2. Conditional INSERT ALL
WHEN 조건에 부합되는 ROW를 여러 테이블에 INSERT하여 수행합니다.
3. Conditional INSERT FIRST
WHEN 조건 중에 가장 먼저 만족하는 경우만 INSERT를 수행합니다.
참고
나머지 조건절의 INSERT는 수행하지 않습니다.
주의
Sequence 사용시 Insert 대상이 되는 테이블에 동일한 Sequence 값이 삽입됩니다.
따라서 테이블 PK가 Sequence를 사용한다면 Multi Insert는 사용이 불가능합니다.