[Oracle] 시퀀스 생성 - 자동증가
웹개발을 하다보면 테이블 생성시 단순 숫자로된 필드를 PK로 잡고 사용할때가 있다.
이때 DBMS에서 제공하는 자동증가 함수를 사용하면 개발이 편하다.
물론 숫자 형식이라도 어떠한 특정 규칙을 가져야 할 경우 소스 상에서 규칙대로 숫자를 생성후에 테이블에 insert 하면 되지만,
특별한 규칙이 필요없는 일반적인 상황에서라면 자동으로 1씩 증가되는 자동증가 함수를 사용하면 된다.
MySQL의 경우 autoincrement, MS-SQL의 경우 identity 옵션을 해당 컬럼에 설정하면 자동으로 1씩 증가한다.
그러나 오라클의 경우 그러한 해당 옵션이 존재하지 않는다. 대신 시퀀스라는것을 생성하여 사용하면 된다.
MySQL이나 MS-SQL보다 불편하긴 하지만, 그래도 자동 증가를 사용할 수 있으니 그나마 다행이다.
오라클에서 시퀀스를 생성하는 방법은 다음과 같다
[시퀀스 생성]
CREATE SEQUENCE 시퀀스이름; |
[시퀀스 생성시 옵션 사용]
CREATE SEQUENCE 시퀀스이름 |
INCREMENT : 시퀀스의 자동 증가값. 제외시 1씩 증가
START : 시퀀스의 시작 값. 제외시 1부터 시작
MAXVALUE : 시퀀스 최대값, NOMAXVALUES : 최대값 제한 없음
MINVALUE : 시퀀스 최소값, NOMINVALUE : 최소값 제한 없음
CYCLE : 최대값이 지나면 다시 시작, NOCYCLE : 최대값이 지나면 다시 시작 안함
CACHE : 시퀀스값을 메모리에 할당, NOCACHE : 메모리에 할당하지 않음
[시퀀스 호출]
INSERT INTO 테이블명(seq, name) VALUES(시퀀스이름.NEXTVAL, '홍길동') ; |
자동 증가된 시퀀스 값을 가져오고 싶을땐 NEXTVAL 사용
NEXTVAL : 현재 시퀀스에서 증가된 값
CURRVAL : 현재 시퀀스의 값
[시퀀스 삭제]
DROP SEQUENCE 시퀀스이름 ; |
TIP) 시퀀스는 NUMBER형이다. 그렇기 때문에 자동증가값을 담을 컬럼은 숫자형태의 컬럼이어야 한다.