Preloader image
DDD

데이터베이스

계층형 increment 값 미리 가져오고 1개 칼럼 이상 값 Insert 하기

작성자 관리자 (admin)
조회수 10,074
입력일 2023-06-01 15:45:31

DB 입력 시 - MySQL , MariaDB
자동 증가 번호를
같은 테이블의 1개 이상의 칼럼 동시 입력
1개 이상의 테이블에 동시 입력

해야하는 경우.

myBatis 예)

    <insert id="community_insert" parameterType="com_community_vo">

        /* CommunityMapper.com_community_insert */

        <selectKey resultType="int" keyProperty="com_bbs_parent_num" order="BEFORE">
            SELECT AUTO_INCREMENT
              FROM information_schema.tables
             WHERE table_name = '
com_community'
               AND table_schema = DATABASE()

        </selectKey>

        INSERT INTO com_community
        (
              com_bbs_num
            , com_bbs_parent_num 
            , com_bbs_sort       
            , com_bbs_depth      
            , com_bbs_subject    
            , com_bbs_create_user
            , com_bbs_create_date
            , com_bbs_update_user
            , com_bbs_update_date
        )
        VALUES
        (
              #{com_bbs_parent_num} -- 실제 LAST_INSERT_ID() 값과 동일하다. 
            , #{com_bbs_parent_num} -- 초기 동일값을 넣어야하는 계층형의 경우. LAST_INSERT_ID() 를 쓰면 여기에는 0이 출력되므로 사용 불가
            , #{com_bbs_sort       }
            , #{com_bbs_depth      }
            , #{com_bbs_subject    }
            , #{com_bbs_create_user}
            , now()
            , #{com_bbs_update_user}
            , now()
        )

    </insert>