• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (322) N
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (11)
      • 리눅스 (2)
      • 닷넷 (0)
      • 자바 (67)
        • spring (7)
      • js (35)
      • 오라클 (40) N
        • PLSQL (4) N
      • cs (7)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [오라클/SQL] Insert All
        2024년 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바