* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window7 64bit |
|
|
|
|
|
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
SELECT my_sequence.nextval
FROM dual
WHERE my_sequence.nextval BETWEEN 1 AND 99999999
AND my_sequence.nextval NOT BETWEEN 20 AND 29;
시퀀스 값이 현재 19일 때
20~29는 제외를 하고 30으로 넘기고 싶은데
다음처럼 나온 쿼리문을 실행하면 +1 해서 20으로 갑니다 방법이 없나요?
말씀하신 sequence는 수표 번호와 같은 값을 자동으로 생성할 수 있는 데이터베이스 객체로 이해됩니다.
CUBRID에서는 serial이라고 표현하고 있습니다.(https://www.cubrid.org/manual/ko/11.3/sql/schema/serial_stmt.html#id1)
연속된 값을 출력하는 객체로, 원하시는 특정값만 제외할 수 있는 옵션은 현재 제공되고 있지 않고 있습니다.
대신 아래와 같이 2가지 우회 방안을 제시해보니 검토 해 주시기 바랍니다.
1. 현재값이 19일 때, csql>select my_sequence.NEXT_VALUE 를 반복적으로 호출한 후 30인 경우 my_sequence.CURRENT_VALUE를 확인 후 수행하는 방법
2.현재값이 19일 때, csql > alter serial my_sequence start with 30; 으로 시리얼의 시작값을 변경 하여 사용
감사합니다.