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 139
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4478
365 python 3.9 지원 문의 1 리치타이거 2023.01.17 86
364 php 7.3 + Cubrid 8.4.4 연동 문제 1 땡땡이 2021.06.08 86
363 auto commit 이 되어있어서 잘못 update 처리한 데이터가 commit 되었을 때 대처법 부탁드립니다 1 rollback 2023.07.21 86
362 스크립트와 cubrid manager 어떤게 문제 일까요? 1 윈디 2022.02.18 86
361 on duplicate key update values 사용 방법 질문 2 jslee 2022.02.22 86
360 혼합형 데이터 정렬방법 1 큐키 2021.06.11 86
359 JAVA SP 에서 addBatch 오류 문의 1 방글이 2024.01.03 86
358 데이터타입 조회 문의 3 file 박혀누 2023.08.23 85
357 ha 구성시 warning summary 'SP' 질문있어요 2 덴드로비움 2020.12.10 85
356 브로커 질문 드립니다. 1 덴드로비움 2020.08.10 85
355 질의자동화 등록 오류 관련 문의 2 file ots21 2021.07.07 85
354 마이그레이션 툴 사용시 커멘트까지 내보내는 방법이 있나요? 1 워리파파 2020.11.10 85
353 dba권한 상속 1 네오랜덤 2023.04.05 85
352 JAVA 로직 호출방법 가이드 문의 3 준88 2022.08.29 85
351 mysql로 DB연동 문의 3 연동테스트용 2024.03.20 85
350 INITCAP함수 대체 1 suyeon 2022.04.13 85
» start connect 문을 이용 하여 업데이트 문의 4 file gidoree 2022.10.13 84
348 Cubrid Manager Hang 2 file user 2022.02.15 84
347 [데이터 이관] 큐브리드 데이터 이관 문의 4 뚜벅뚜벅 2024.04.30 84
346 다른 사용자 계정에서 csql로 localhost 접근 문제 4 가을이아빠 2024.03.05 83
Board Pagination Prev 1 ... 178 179 180 181 182 183 184 185 186 187 ... 201 Next
/ 201

Contact Cubrid

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