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 96
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4467
3899 파일에서 읽어 저장 2 현수 2020.04.09 148
3898 파일 업로드 시 생기는 DB 다운 7 오렌지 2021.06.14 237
3897 파이썬에서 튜토리얼대로 했는데 안됩니다. 2 이방원 2020.08.02 258
3896 파이썬 스크립트로 Cubrid DB에 데이터 저장 문의 큐브릿파이썬 2020.09.08 181
3895 파이썬 라이브러리 설치 질문드립니다. 5 JayHan 2019.09.07 2677
3894 파워빌더10.2에서 ODBC설정에 대한 문제 1 ksk 2009.12.05 22574
3893 파워빌더 큐브리드 연결 1 file 소금인형™ 2009.11.17 14483
3892 파워빌더 odbc 연결중 오류 1 소솜 2015.05.01 15512
3891 파워빌더 10.5 ODBC 연결 오류 2 카이 2009.12.11 19541
3890 파라미터 적용시 성능에 대해 3 secret 로운 2012.11.20 14
3889 파라미터 바인드 문제.. 2 오션나인 2021.06.04 262
3888 특정테이블 조회시 속도 저하문의 2 secret chocob 2014.11.07 13
3887 특정단어 삭제 6 ddmmdd 2023.07.13 165
3886 특정값으로 문자열을 분리하려고 합니다 1 secret 이호영 2016.02.15 8
3885 특정DB만 접근 시간이 현저하게 오래 걸리는 문제 1 file 그로구 2024.03.20 66
3884 특정DB 정지 오류 1 빛날구름 2015.09.21 6300
3883 특정 테이블 최적화 시 에러 발생 3 인경수 2009.07.11 10761
3882 특정 테이블 조회시 에러 가 납니다? 용량 문제 인가요?? 다른테이블은 조회가 잘되요 1 덴드로비움 2020.08.07 694
3881 특정 테이블 복구는 ? 6 file 인경수 2010.06.03 12969
3880 특정 컬럼 조건문 값에서 에러가 발생합니다. 3 청백-e 2015.08.26 8820
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