Background Image

FORUM

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

단축키

Prev이전 문서

Next다음 문서

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


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

OS
CENTOS 7
CUBRID Ver.
11.2.0
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java


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

 

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


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
수고 많습니다.

아래와 같이 start connect 문을 이용 하여 업데이트 처리관련 하여 문의 드립니다.

 

1. 원 데이터

id     intent_fcnt      depth
83    58                   1
427  5                     2
429  1                     3

 

2. 쿼리문 #1

select         _ID as ID ,        1 as INTENT_FCNT ,        1 as INTENT_SCNT
    from
        (select t.ID as _ID
         from WISEICHAT_CATEGORY t
        start with t.id = 429
        connect by prior t.PARENT_ID = t.ID )

(*) 원하는 결과가 나옴
429    1    1
427    1    1
83      1    1

 

3. 쿼리문 #2

update
    WISEICHAT_CATEGORY C
join (
    select
        _ID as ID ,         1 as INTENT_FCNT ,        1 as INTENT_SCNT
    from
        (select  t.ID as _ID
         from WISEICHAT_CATEGORY t
        start with t.id = 429
        connect by prior t.PARENT_ID = t.ID ) ) N on C.ID = N.ID             
set    C.INTENT_FCNT = C.INTENT_FCNT + N.INTENT_FCNT 
(*) 결과 :

      쿼리 로직이 잘못된건지 아님 다른 이유가 있어서 그런건지

     429만 건수가 증가되고 나머지 427 & 83 은 미 반영 되어 있읍니다.

83    58
427  5

429  2

 

4. 위내용을 그림으로 첨부.

 

이상입니다.

 

  • ?
    bwkim 2022.10.13 15:14
    11.2 버전에서 아래와 같이 csql로 해보았습니다.

    csql> create table wiseichat_category (id int, name varchar, project_id int, parent_id int, intent_fcnt int, intent_scnt int, type int, [depth] int);
    csql> insert into wiseichat_category (id, parent_id, intent_fcnt, [depth]) values (83, null, 58, 1), (427, 83, 5, 2), (429, 427, 1, 3);

    update
    WISEICHAT_CATEGORY C
    join (
    select
    _ID as ID , 1 as INTENT_FCNT , 1 as INTENT_SCNT
    from
    (select t.ID as _ID
    from WISEICHAT_CATEGORY t
    start with t.id = 429
    connect by prior t.PARENT_ID = t.ID ) ) N on C.ID = N.ID
    set C.INTENT_FCNT = C.INTENT_FCNT + N.INTENT_FCNT ;

    3 rows affected. (0.003715 sec) Committed. (0.000009 sec)

    select * from wiseichat_category;

    === <Result of SELECT Command in Line 1> ===

    id name project_id parent_id intent_fcnt intent_scnt type depth
    =================================================================================================================
    83 NULL NULL NULL 59 NULL NULL 1
    427 NULL NULL 83 6 NULL NULL 2
    429 NULL NULL 427 2 NULL NULL 3

    3개 row 모두 update가 되었습니다.

    id를 primary key로 해도 동일했고, parent_id를 index로 만들어도 동일했습니다.

    말씀하신 결과는 어떤 환경에서 동작을 했는지 알려 주시면, 동일한 환경에서 재현해 보겠습니다.
    자바 환경으로만 되어 있어서, JDBC를 이용해서도 시험해 봤지만 결과는 동일했습니다.

    첨부된 이미지와 같은 내용을 확인할 수 있는 툴은 어떤 것인지 말씀해 주시면, 동일 툴을 사용해서 시험해 보겠습니다.
  • ?
    gidoree 2022.10.13 15:52

    과중한 업무에 따뜻한 답변 주셔서
    매우 감사드리며
    아래와 같이 진행환경을 전달 드립니다.

    0. 환경
    - 서버 사이드
    OS : CENTOS 7
    JAVA 1.7
    CUBRID 11.2.0

    - 클라이언트 사이드 (*) 두 환경 모두 같은 증상 입니다
    a. Dbeaver 버전22.2.0.202209040629
    b. SQLGate FOR CUBRID 9.17.1.0

    1. DDL 문
    CREATE TABLE "wiseichat.wiseichat_category" (
    id INTEGER DEFAULT NULL NOT NULL,
    name VARCHAR(100) DEFAULT NULL,
    project_id INTEGER DEFAULT NULL NOT NULL,
    parent_id INTEGER DEFAULT NULL,
    intent_fcnt INTEGER DEFAULT 0,
    intent_scnt INTEGER DEFAULT 0,
    "type" VARCHAR(1) DEFAULT 'I' NOT NULL,
    "depth" INTEGER DEFAULT NULL NOT NULL,
    CONSTRAINT pk_wiseichat_category_id PRIMARY KEY (id)
    );
    CREATE INDEX category_category_parent_id_idx ON "wiseichat.wiseichat_category" (parent_id);
    CREATE INDEX category_category_project_id_idx ON "wiseichat.wiseichat_category" (project_id);
    CREATE UNIQUE INDEX wiseichat_category_pk ON "wiseichat.wiseichat_category" (id);

    2. insert 문
    INSERT INTO "wiseichat.wiseichat_category" (id, name, project_id, parent_id, intent_fcnt, intent_scnt, "type", "depth") VALUES(83, '시스템', 4, NULL, 59, 0, 'I', 1);
    INSERT INTO "wiseichat.wiseichat_category" (id, name, project_id, parent_id, intent_fcnt, intent_scnt, "type", "depth") VALUES(427, '임용 시스템 관리', 4, 83, 6, 0, 'I', 2);
    INSERT INTO "wiseichat.wiseichat_category" (id, name, project_id, parent_id, intent_fcnt, intent_scnt, "type", "depth") VALUES(429, '육아휴직 연장 시 종료일 변경방법', 4, 427, 2, 0, 'I', 3);

    3. 초기화 update 문;
    UPDATE "wiseichat.wiseichat_category" SET name='시스템', project_id=4, parent_id=NULL, intent_fcnt=59, intent_scnt=0, "type"='I', "depth"=1 WHERE id=83;
    UPDATE "wiseichat.wiseichat_category" SET name='임용 시스템 관리', project_id=4, parent_id=83, intent_fcnt=6, intent_scnt=0, "type"='I', "depth"=2 WHERE id=427;
    UPDATE "wiseichat.wiseichat_category" SET name='육아휴직 연장 시 종료일 변경방법', project_id=4, parent_id=427, intent_fcnt=2, intent_scnt=0, "type"='I', "depth"=3 WHERE id=429;

    4.SELECT 만 떼어낸 쿼리문
    SELECT t.ID AS _ID
    , t.PARENT_ID, level AS [LEVEL]
    FROM WISEICHAT_CATEGORY t
    START WITH t.id = 429
    CONNECT BY PRIOR t.PARENT_ID = t.ID
    ;

    5. 업데이트 쿼리문
    update
    WISEICHAT_CATEGORY C
    join (
    select
    _ID as ID , 1 as INTENT_FCNT , 1 as INTENT_SCNT
    from
    (select t.ID as _ID
    from WISEICHAT_CATEGORY t
    start with t.id = 429
    connect by prior t.PARENT_ID = t.ID ) ) N on C.ID = N.ID
    set C.INTENT_FCNT = C.INTENT_FCNT + N.INTENT_FCNT
    ;

    6. 데이터 결과 확인 쿼리문
    select * from WISEICHAT_CATEGORY where id in (83, 427, 429);

    이상입니다.

  • ?

    첨부된 이미지를 참고하시기 바랍니다.

    일단 동일한 환경에서 SQL_Gate 결과입니다. 문의하신 결과와는 다르게, 정상적으로 출력이 되고 있습니다.

     

  • ?
    gidoree 2022.10.14 09:05
    답변 감사드리며 무엇이 잘못 되었는지 내부적으로 더 검토 해보겠습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 47
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3894 jdbc 오류 1 file 대청댐 2023.09.22 107
3893 javasp start fail이 발생합니다. 1 유수부쟁선 2023.09.22 62
3892 자연조인문제 1 dfahwh 2023.09.17 71
3891 killtran 관련하여 문의 드립니다. 1 후루숑 2023.09.06 147
3890 Cubrid 물리명 길이 제한 값이 어떻게되나요? 3 엘L 2023.09.05 109
3889 쿼리속도문제 3 Ggyak 2023.09.01 160
3888 dbtimezone 1 sj.han 2023.08.30 95
3887 데이터베이스 삭제시 incorrect or missing password 1 dfahwh 2023.08.26 114
3886 재귀절을 이용한 뷰 생성 1 sj.han 2023.08.24 105
3885 데이터타입 조회 문의 3 file 박혀누 2023.08.23 85
3884 cannot communicate with the broker or received invalid packet 1 free 2023.08.23 133
3883 Docker 4 sj.han 2023.08.23 252
3882 비밀번호 변경 오류 1 file dfahwh 2023.08.18 108
3881 큐브리드 DB 복원 관련 문의 1 fewkgpokp 2023.08.14 76
3880 큐브리드 매니저 테이블 목록 표시 관련해서 질문이 있습니다 1 리에레이 2023.08.09 91
3879 cubrid에 세션확인 방법 1 redrum 2023.08.04 142
3878 테이블 코멘트 컬럼 코멘트 질문 1 file 대청댐 2023.08.03 74
3877 다중 IN(튜플 IN)이 1건인 경우 오류 발생됩니다 큐브리드 자체문제이지 않나 싶어 문의드립니다 1 일개미81호 2023.08.01 92
3876 GRANT SELECT 후 SELECT 쿼리 실행 오류 문의 1 바보똥개 2023.07.25 102
3875 auto commit 이 되어있어서 잘못 update 처리한 데이터가 commit 되었을 때 대처법 부탁드립니다 1 rollback 2023.07.21 86
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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