- [오라클/SQL] Insert All2024년 12월 29일
- chantleman
- 작성자
- 2024.12.29.:28
INSERT ALL 은 여러개 테이블에 동시에 데이터를 입력할 때 사용한다
1. 여러 테이블에 동시에 INSERT
INSERT ALL INTO 테이블1(컬럼1, 컬럼2, ...) VALUES(값1, 값2) INTO 테이블2(컬럼1, 컬럼2, ...) VALUES(값1, 값2) SELECT * FROM DUAL;
INSERT ALL로 시작해서 SELECT * FROM DUAL로 끝난당
2. 다른 테이블의 데이터를 여러 테이블에 동시에 같은 데이터 INSERT
INSERT ALL INTO 테이블1 (컬럼1, 컬럼2) INTO 테이블2 (컬럼1, 컬럼2) SELECT 컬럼1, 컬럼2 FROM 테이블3 WHERE 조건;
다른 테이블에 있는 값을 가져와서 INSERT하는 경우에는 위와 같이 사용하면 된당
3. 다른 테이블의 데이터를 조건에 맞게 INSERT
INSERT ALL WHEN 조건1 THEN INTO 테이블1 (컬럼1, 컬럼2) WHEN 조건2 THEN INTO 테이블2 (컬럼1, 컬럼2) SELECT 컬럼1, 컬럼2 FROM 테이블3;
예시 )
INSERT ALL INTO PROD(PROD_ID,PROD_NAME,PROD_LGU,PROD_BUYER,PROD_SALE,PROD_OUTLINE) VALUES('P201000121','패션1','P201','P20101',12000,'내용11') INTO PROD(PROD_ID,PROD_NAME,PROD_LGU,PROD_BUYER,PROD_SALE,PROD_OUTLINE) VALUES('P201000122','패션2','P201','P20101',12000,'내용12') INTO PROD(PROD_ID,PROD_NAME,PROD_LGU,PROD_BUYER,PROD_SALE,PROD_OUTLINE) VALUES('P201000123','패션3','P201','P20101',12000,'내용13') SELECT * FROM DUAL
Mybatis에서 사용할 경우 foreach를 사용하면 된당
여기서 주의할 점은 다중 insert (InsertAll)할 때 Insert가 아닌 Update 태그를 사용해야한다 !!
<update id="insertAllProd" parameterType="kr.or.ddit.vo.LprodVO"> <selectKey resultType="int" order="BEFORE" keyProperty="lprodId"> SELECT SUBSTR(MAX(PROD_ID),5)+1 FROM PROD WHERE PROD_LGU = #{lprodGu} </selectKey> <foreach collection="prodVOList" item="prodVO" open="INSERT ALL" close="SELECT * FROM DUAL" separator=" " index="idx"> INTO PROD(PROD_ID,PROD_NAME,PROD_LGU,PROD_BUYER,PROD_SALE,PROD_OUTLINE) VALUES(#{lprodGu} || TRIM(TO_CHAR(#{lprodId}+#{idx},'000000')) ,#{prodVO.prodName},#{prodVO.prodLgu},#{prodVO.prodBuyer} ,#{prodVO.prodSale},#{prodVO.prodOutline}) </foreach> </update>
728x90다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)