안녕하세요.
큐브리드에서 오라클의 시쿼스나 MySQL의 AUTO_INCREMENT 컬럼 같은
기능이 어떤 것인지 알고 싶습니다.
시퀀스라는 컬럼 타입이 있긴 하던데 이건 다른 기능이더군요.
더불어 그런 기능이 있다면, 값을 입력 후, 입력된 값을
얻어 오는 방법도 알고 싶습니다.
바쁘시면 해당 문서 위치라도 알려 주시면 감사하겠습니다.
감사합니다.
안녕하십니까?
(주)큐브리드의 손승일입니다.
먼저 CUBRID에 관심을 가져 주셔서 감사합니다.
저희 CUBRID에도 오라클의 시퀀스와 같은 기능을 하는 타입으로 SERIAL이라는 타입이 있습니다.
기능은 아시는바와 같이 유일한 일련번호를 생성하고 사용하는 것으로
1. 생성방법은 다음과 같습니다.
CREATE SERIAL serial_identifier
[START WITH n]
[INCREMENT BY n]
[MINVALUE n | NOMINVALUE]
[MAXVALUE n | NOMAXVALUE]
[CYCLE | NOCYCLE]
- START WITH n : 일련번호의 시작 번호 값을 n으로 지정
- INCREMENT BY n : 생성되는 번호들의 증감 폭을 n으로 지정(default 1)
- MINVALUE n : 최소값을 n으로 설정(default 1, -1036)
- MAXVALUE n : 최대값을 n으로 설정(default 1036, -1)
- CYCLE | NOCYCLE : 최대(최소)값에 도달했을 경우, 값을 재 생성 여부지정
예)
sqlx또는 visual-sql을 통해 DB에 접속하셔서
create serial ser_num start with 1 maxvalue 1000 nocycle;
실행하시면
SERIAL ser_num이 시작 1, 최대 1000, 재생성하지 않음 으로 생성됩니다.
2. 생성된 SERIAL을 사용하는 방법은 다음과 같습니다.
- CURRENT_VALUE : SERIAL의 현재 값 리턴.
- NEXT_VALUE : 현재 SERIAL을 증가 시킨 후 증가된 값 리턴.
위에서 생성한 SERIAL ser_num을 사용한다면
select ser_num.next_value from table({1}) t(a);
SERIAL ser_num의 증가된 값이 리턴됩니다.
3. SERIAL을 갱신하는 방법은 다음과 같습니다.
ALTER SERIAL serial_idendifier
모든 요소가 다 수정 가능하지는 않고 위와 같은 요소들만 수정할 수 있습니다.
alter serial ser_num increment by2;
SERIAL ser_num의 증감폭을 2로 변경합니다.
4. SERIAL 삭제 방법은 다음과 같습니다.
DROP SERIAL serial_identifier
drop serial ser_num;
실행하면 SERIAL ser_num이 삭제됩니다.
이상으로 질문하신 내용에 대해 간략히 답변드렸습니다. 도움이 되었기를 바랍니다.
아하. 그렇군요~
친절한 답변에 감사드립니다.! (__)