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 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3734 CUBRID Manager(11.0.0.0001) Python Driver 설치 오류 4 metalk2003 2022.11.10 125
3733 큐브리드 방화벽 관련해서 질문있습니다. 2 사블 2022.11.08 170
3732 큐브리드 매니저 -> 데이터베이스 복구 오류 문제 문의 3 file propolisCandy 2022.11.07 52
3731 큐부리드 함수 문의 2 file ozro 2022.11.07 116
3730 ADO.NET 에서 connection pool 사용 가능한가요? 1 시나브로 2022.11.04 33
3729 oracle_style_empty_string 설정 클라이언트 단에서 조회 2 hjeong 2022.11.04 55
3728 HA 이중화 구성 시에 master, slave 관련하여 질문 드립니다. 1 k1n9 2022.11.02 166
3727 ubuntu:20.04 cubrid 설치 문의 1 file green_auth 2022.11.01 90
3726 큐브리드에서 테이블 용량, 로우사이즈 검색방법 1 차솨 2022.10.28 552
3725 타 큐브리드 db에 insert 하려면.. 1 백수인 2022.10.28 119
3724 큐브리드 디렉토리 용량 문의 1 file 김상원 2022.10.28 74
3723 SQLGate 데이터 내보내기 오류 1 써늬니 2022.10.25 167
3722 스키마 내려받기 문의 3 ozro 2022.10.24 68
3721 저장프로시저 샘플 테스트 에러 Invalid call: it can not return ResultSet. 5 흔색늑대 2022.10.21 125
3720 쿼리 실행 성공 여부가 일정하지 않습니다. 2 ozro 2022.10.21 80
3719 같은 함수를 하나의 쿼리에서 두번 호출하면 에러발생 4 ozro 2022.10.21 78
3718 java 저장 함수를 생성하여 254자가 넘는 INPUT을 주었을 경우 OUTPUT이 NULL로 리턴되는 현상 발생 3 두목원슝 2022.10.21 82
3717 호스트 연결이 무한 로딩도네요 1 file 큐브리드사용자 2022.10.20 119
3716 HA환경 문의드립니다. 4 file 하얀미스 2022.10.19 96
3715 큐브리드 createStatement 질문드려요 2 차솨 2022.10.19 85
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 200 Next
/ 200

Contact Cubrid

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