티스토리 뷰

원래 시퀀스 만드는것보다

select nvl(max(컬럼명), 0) + 1 from dual;

형식으로 증가값을 만드는걸 선호했는데

오늘 그렇게 했다가 상사분께 혼났다.


이론적으로 내부에서 어떻게 차이가 있는지까지는 알려주시지않았지만 저렇게 사용하는것 보다는 시퀀스를 만들라고 하셔서.. 시퀀스 만드는법에 대해 포스팅을 하려한다.


시퀀스 생성법


CREATE SEQUENCE  시퀀스명 
        INCREMENT BY 증가값
        START WITH 시작값
        MAXVALUE n 또는 NOMAXVALUE
        MINVALUE n 또는 NOMINVALUE
        CYCLE 또는 NOCYCLE
        CACHE 또는 NOCACHE;


START WITH 까지만 써도 생성이 된다.

최대값, 최소값 까지는 뭔말인지 알겠는데 cycle 이랑 cashe는 잘 모르겠다.

cycle은 최대값까지 도달했을때 순환하는거라고하니 기본키에는 설정하면 안되는것 같다.

cache는 미리 메모리상에 값을 상주시켜놓는다고 하는데 이해하기어려우니 다음에 기회될때 공부해야겠다.


여튼 우리가 보통 시퀀스를 사용하는경우는 기본키인경우가 많고 굳이 기본키가 아니라하더라도 start with까지만 알고있어도 웬만한 상황에서는 대처가 가능할것 같다.


입력과 조회: 입력시는 NEXTVAL , 조회시는 CURRVAL 사용


SELECT 시퀀스.NEXTVAL FROM DUAL;

SELECT 시퀀스.CURRVAL FROM DUAL;


위쪽 쿼리를 실행하면 시퀀스가 실행되어 계속 1씩 증가한다.

5번 실행하면 증가값이 1일때 처음보다 5가 증가한 값을 보여줌.

아래쪽 쿼리를 실행하면 현재 시퀀스 값을 보여준다. 

5번 실행해도 같은 값을 보여줌.


시퀀스 삭제
DROP SEQUENCE 시퀀스명

'DataBase' 카테고리의 다른 글

생성된 인덱스 확인방법  (0) 2014.12.10
오라클 기본키 2개이상 지정하기  (0) 2014.08.19
count 로 개수 + 0 가져오기  (0) 2014.08.11
오라클 comment 달기  (0) 2014.08.08
ERWin sql 추출  (2) 2014.08.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함