Background Image

FORUM

조회 수 5591 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, mybatis, jdbc


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

mybatis를 사용해서 bulk insert or update를 하나의 쿼리로 작성중에 있는데요
mysql 같은 경우 아래와 같이 values 키워드를 통해서 insert가 안되면 insert하고자 했던 내용으로 update가 가능하도록 할 수 있는 것으로 알고 있습니다.

<insert id="upsert" parameterType="map" useGeneratedKeys="false">
    INSERT
    INTO tt(
    a, b, c
    )
    VALUES
    <foreach collection="list" item="item" separator=",">
        (
        , #{item.a} as a
        , #{item.b} as b
        , #{item.c} as c
        )
    </foreach>
    ON DUPLICATE KEY UPDATE
    a = values(a),
    b = values(b)
</insert>

cubrid에서도 가능한 방법이 있을까요 ?

 

  • ?
    권호일 2021.07.14 13:14
    아래와 같이 변경해서 테스트 해 보세요.


    <insert id="upsert" parameterType="map" useGeneratedKeys="false">
    INSERT
    INTO tt(
    a, b, c
    )
    VALUES
    <foreach collection="list" item="item" separator=",">
    (
    #{item.a}
    , #{item.b}
    , #{item.c}
    )
    </foreach>
    ON DUPLICATE KEY UPDATE
    a = #{item.a},
    b = #{item.b}
    </insert>
  • ?
    dodev 2021.07.15 08:36
    일전에 테스트를 해보았었는데요, item을 파라미터로 인식하고 파라미터를 못찾는 바인딩 예외가 발생합니다.

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException
  • ?
    오명환 2021.07.15 09:49
    cubrid는 on duplicate key update 구문에 values() 를 지원하고 있지 않습니다.
    mybatis구문에서 foreach 구문에 on duplicate key update 구문까지 넣어서 변경해보세요.
    <foreach collection="list" item="item" separator=",">
    (
    , #{item.a} as a
    , #{item.b} as b
    , #{item.c} as c
    )
    ON DUPLICATE KEY UPDATE
    a = #{item.a} ,
    b = #[item.b]
    </foreach>

    그리고, cubrid 에서 replace into 구문을 지원합니다. 동작은 insert on duplicate key update와 동일하고, 사용은 insert 구문과 유사합니다.
    <insert id="upsert" parameterType="map" useGeneratedKeys="false">
    REPLACE
    INTO tt(
    a, b, c
    )
    VALUES
    <foreach collection="list" item="item" separator=",">
    (
    #{item.a}
    , #{item.b}
    , #{item.c}
    )
    </foreach>
    </insert>
  • ?
    dodev 2021.07.15 10:57
    테스트를 해보니 foreach 문 안쪽으로 ON DUPLICATION KEY UPDATE 문을 넣어서도 안되는 것 같네요. grammer 예외로 나오네요

    그리고 replace 같은 경우 update 조건이 되었을 때, 행을 제거하고 새로 삽입하기 때문에 ON DUPLICATE KEY UPDATE 문을 적극 이용해보려고 했던 상황이였는데요,
    아무래도 불가능하다면 REPLACE도 고려해봐야겠네요

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 21 admin 2024.04.23 143885
3509 함수 생성 관련 문의 1 bnb0165 2021.10.12 4206
3508 cubrid to oracle 마이그레이션 1 하영창 2021.10.08 3597
3507 데이터베이스 복구 문제입니다 6 file 황수연 2021.10.08 4980
3506 2000년대 날짜 입력 시 오류 3 file 떼잉 2021.10.08 4075
3505 insert ,update,delete 트리거 질문하겠습니다. 3 연습용 2021.10.06 4586
3504 Cubrid admin 접속 관련 문의 1 file 나리아 2021.10.05 4013
3503 오라클에서 max() keep의 기능은 어떻게 변경해야할까요 1 12 2021.10.05 4126
3502 설치시 오류관련 질문입니다 2 유글 2021.10.05 11276
3501 edit host 에러 문의 1 file yong 2021.10.01 11236
3500 큐브리드 매니저에서 질의 실행계획 질문하겠습니다. 3 file 연습용 2021.10.01 4206
3499 CUBRID 엔진 설치 시 중단증상2 1 file soso 2021.09.27 3526
3498 CUBRID 엔진 설치 시 중단증상 1 file soso 2021.09.26 5305
3497 한국방송통신대학교 과제에 큐브리드 사용시 에러 질문 입니다. 2 file 대모산까치 2021.09.26 4417
3496 Generic 볼륨이 계속해서 증가합니다. 6 wowowow 2021.09.24 4108
3495 계층형 쿼리 내 집계함수 사용 문의 2 Raven 2021.09.24 3595
3494 큐브리드 order by 힌트가 있을까요? 1 겸둥이k 2021.09.23 4190
3493 테이블 가져오기 수행방법 좀 알려주세요 1 file 이야기 2021.09.23 4397
3492 큐브리드 다운 안되는 문제 2 sjljalks 2021.09.20 3639
3491 질의편집기에서 특정 테이블에 조건을 주어 select한 데이터들의 용량 확인 방법 문의 1 테스형2 2021.09.16 3846
3490 ERWIN에서 Reverse Engineer 사용중에 에러 발생 3 연습용 2021.09.15 4434
Board Pagination Prev 1 ... 33 34 35 36 37 38 39 40 41 42 ... 213 Next
/ 213

Contact Cubrid

영업문의 070-4077-2112 / 기술문의 070-4077-2148 / 대표전화 070-4077-2110 / Email. contact_at_cubrid.com
Contact Sales