위로 아래

INSERT ALL

  1. 사용하는 경우
    1. 여러 개의 테이블에 데이터를 입력
    2. 한 개의 테이블에 여러 데이터를 입력
  2. 종류
    1. INSERT INTO : 1개의 테이블에 1개의 행을 입력
    2. INSERT SELECT : 테이블2에서 검색한 컬럼의 데이터들을 테이블1의 컬럼에 삽입
    3. INSERT ALL INTO : 여러 테이블에 여러 행 입력

 

 

 


사용법

기본형

insert all 
	into 테이블1(컬럼1,컬럼2) values (값1, 값2)
	into 테이블2(컬럼1,컬럼2) values (값1, 값2)
select * from dual;

 

 

조건형

insert all
	when 조건1 then
	into 테이블1 (컬럼1, 컬럼2)
	when 조건2 then
	into 테이블2 (컬럼1, 컬럼2)
select 컬럼1, 컬럼2
from 테이블1;

 

조건형2

insert all
	into 테이블1 (컬럼1, 컬럼2)
	into 테이블2 (컬럼1, 컬럼2)
select 컬럼1, 컬럼2
from 테이블1
where 조건1;

 

 

 

 


 

예시

<insert id="insertOrders" parameterType="list">

    <selectKey keyProperty="o_no" resultType="int" order="BEFORE">
        SELECT NVL(MAX(o_no), 0)+1 AS o_no FROM ordert
    </selectKey>

    <foreach collection="list" item="ovo" index="index" open="INSERT ALL " close="SELECT * FROM DUAL" separator=" ">
        INTO ordert(o_no, price, amount, quantity, o_regdate, state, mem_id, p_no)
        VALUES(#{o_no}, #{ovo.price}, #{ovo.price}*#{ovo.quantity}, #{ovo.quantity}, SYSDATE, 1, #{ovo.mem_id}, #{ovo.p_no})
    </foreach>
</insert>