Background Image

FORUM

?

단축키

Prev이전 문서

Next다음 문서

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


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

OS
Window10 64bit, Linux 64bit 등
CUBRID Ver.
10.2.0
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
nodejs


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

 

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


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

client.execute('INSERT INTO tbl (name) VALUES(?)', 'cubrid', function (err) {
  // Handle the error;
});

 

인서트 작업 후 콜백함수로 새로 추가된 자동증가된 ID값을 얻고 싶은데, 콜백함수는 에러만 처리하는거 같은데 좋은 방법이 없을까요?

mysql의 경우 콜백 함수에 결과값도 지원되어서 그 값을 알수가 있습니다.

 

  • ?
    원종민 2022.02.21 14:42

    1) 큐브리드 NODE 드라이브에서는 mysql 드라이브에서 지원하는 ".insertId" 함수가 없습니다.

    2) 따라서, 아래 예시와 같이 SELECT LAST_INSERT_ID() 쿼리를 수행해 원하시는 "자동증가된 ID값"을 얻을 수 있습니다.
    * LAST_INSERT_ID 함수에 대한 자세한 내용은 아래 온라인 매뉴얼을 참조해주세요.
    * 온라인 매뉴얼 URL : https://www.cubrid.org/manual/ko/10.2/sql/function/information_fn.html?highlight=last_insert_id#last-insert-id

    예제)

    코드 :
    const client = CUBRID.createConnection(dbConf); // cubrid DB connection

    var sql = "INSERT INTO t1 VALUES(null,?)";
    var sql2 = "SELECT LAST_INSERT_ID()";
    client.execute(sql, 'cubrid2', function(err){
    if (err) throw err;
    //mysql에서 지원하는 함수
    //console.log(result.insertId);

    //cubrid 에서는 아래 쿼리를 한 번 더 수행
    client.query(sql2, function(err, result, queryHandle){
    const rows = result.ColumnValues;
    console.log("insertID : " + rows);
    console.log("");
    console.log(result);

     

    client.closeQuery(queryHandle);
    });
    });

    콘솔 결과 :
    insertID : 18

    { ColumnDataTypes: [ 'Numeric' ],
    ColumnNames: [ 'last_insert_id()' ],
    ColumnValues: [ [ 18 ] ],
    RowsCount: 1 }

    DB 결과 :
    csql> create table t1 (col1 int auto_increment, col2 varchar);
    csql> select * from t1;

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

    col1 col2
    ===================================
    1 'cubrid1'
    2 'cubrid1'
    3 'cubrid1'
    ...
    17 'cubrid1'
    18 'cubrid2'

  • ?
    jslee 2022.02.21 17:11
    답변 감사합니다.
  • ?
    원종민 2022.02.21 18:08

    추가로 반복문 테스트 결과 앞서 소개드린 방법으로 수행할 경우, insert 된 값은 전부 정상적으로 들어가나 "자동증가된 ID값" 은 마지막 자동증가된 값만 호출 받습니다.

    예제1) 1~10 을 insert 할 경우

    콘솔 결과 :
    insertID : 10
    insertID : 10
    ...
    insertID : 10
    insertID : 10

    따라서, 현재 찾은 방법은 아래와 같습니다.

    예제2 )

    코드 :
    for(var i=0; i<10; i++){
    var sql = "INSERT INTO t1 VALUES(null,?)";
    var sql2 = "SELECT LAST_INSERT_ID() as insertID";

    client.execute(sql, 'cubrid2', function(err){
    if (err) throw err;
    //mysql에서 지원하는 함수
    //console.log(result.insertId);
    });

    //cubrid 에서는 아래 쿼리를 한 번 더 수행
    client.query(sql2, function(err, result, queryHandle){
    if (err) throw err;

    const rows = result.ColumnValues;
    console.log("insertID : " + rows);
    console.log("");
    console.log(result);

    client.closeQuery(queryHandle);
    });
    }

    콘솔 결과 :
    insertID : 1
    insertID : 2
    ...
    insertID : 9
    insertID : 10


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 52
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3575 on duplicate key update values 사용 방법 질문 2 jslee 2022.02.22 86
3574 큐브리드 서로 다른버전 원격접속 불가능 한게 맞나요?? 4 김성민 2022.02.21 132
3573 Cannot allocate query entry any more. Maximum allocatable entries are 100. 4 jslee 2022.02.21 119
3572 스크립트와 cubrid manager 어떤게 문제 일까요? 1 윈디 2022.02.18 86
3571 select sql실행시 에러 3 file rhrnak 2022.02.18 834
3570 데이터 내보내기 기능 오류 1 큐린이 2022.02.16 172
» nodejs 사용하여 insert 작업 후에 생성된 ID값을 얻고 싶은데 방법이 있을까요? 3 jslee 2022.02.16 401
3568 권한 부여 방법 2 bm 2022.02.15 225
3567 php-cubrid 연동 시 cubrid driver 인식 문의 2 file devlsy 2022.02.15 118
3566 Cubrid Manager Hang 2 file user 2022.02.15 84
3565 생성된 db에 사용자와 스키마 추가하는 법(큐브리드매니저, csql 인터프리터 사용x) 9 도우너19 2022.02.15 434
3564 csql로 .sql가져오기 시, 한글 깨짐 발생 2 도우너19 2022.02.11 392
3563 CAN NOT COMMUNICATE WITH BROKER / 1 폭스공이삼 2022.02.10 599
3562 AUTO INCREASE 가 편집이 안됨 2 file 큐브리드어려워요 2022.02.08 268
3561 cubrid JDBC Driver의 클래스 내용이 궁금합니다. 7 엔디미온 2022.02.08 222
3560 11버전 설치 후에 cub_auto 프로세스가 보이지가 않습니다. 1 kikiki767 2022.02.02 74
3559 auto commit 2 airporti 2022.01.20 130
3558 ER-WIN으로 큐브리드 접속 시 에러 발생(질문 끌올) 2 file airporti 2022.01.12 199
3557 정규식 사용법에 대해서 궁금합니다.. 1 큐브리드어려워요 2022.01.11 715
3556 lv 0으로 백업하고 있는데, 백업 파일의 용량이 항상 같습니다. 2 루루팜 2022.01.11 113
Board Pagination Prev 1 ... 17 18 19 20 21 22 23 24 25 26 ... 200 Next
/ 200

Contact Cubrid

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