* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
예전에 Maria DB 등 다른 RDBMS에서 MyBatis를 활용할 때에는 auto_increment된 key값을 insert의 반환값으로 얻기 위해 usegeneratedkeys 옵션을 사용해주었는데, Cubrid에서는 해당 옵션이 사용 불가능한 것 같습니다. 검색하여 얻은 <selectKey>도 동작을 하지 않는 것 같은데, 다른 방법이 혹시 있나요?
(https://www.cubrid.com/qna/3815047)
auto_increment로 테이블을 생성 한 후, INSERT된 값의 values를 가져오고자 하는 것으로 이해 됩니다.
CUBRID에서 auto_increment 생성 시, db_serical에 등록되며
현재값은 serial_id.current_value로 , 그 다음값은 serial_id.next_value로 호출 하여 사용 하시면 되겠습니다.
//예제 - 테이블 생성
CREATE TABLE auto_tbl (id INT AUTO_INCREMENT, name VARCHAR);
INSERT INTO auto_tbl VALUES (NULL, 'AAA'), (NULL, 'BBB'), (NULL, 'CCC'); //1,2,3 증가
INSERT INTO auto_tbl (name) VALUES ('DDD'), ('EEE'); //4,5 증가
SELECT * FROM auto_tbl;
select * from db_serial where class_name = 'auto_tbl'; //생성된 테이블의 serial명 검색
=== <Result of SELECT Command in Line 1> ===
name owner current_val increment_val max_val min_val cyclic started class_name att_
name cached_num comment
==========================================================================================================================================================================================
===================================================
'auto_tbl_ai_id' db_user 5 1 2147483647 1 0 1 'auto_tbl' 'id'
0 NULL
1 row selected. (0.003445 sec) Committed.
INSERT INTO auto_tbl (name) VALUES ('zzz'); // 6 증가
select auto_tbl_ai_id.CURRENT_VALUE; //현재 입력된 serial값 조회
=== <Result of SELECT Command in Line 1> ===
serial_current_value(auto_tbl_ai_id)
======================
6
참고 : https://www.cubrid.org/manual/ko/10.1/sql/schema/serial_stmt.html#id1