핑구

10. SEQUENCE 본문

JAVA 웹 개발/2. Oracle

10. SEQUENCE

코딩 펭귄 2022. 8. 13. 15:20
📅 2021.09.27

SEQUENCE

  • 순차적으로 정수 값을 자동으로 생성하는 객체로 자동 번호 발생기 역할을 한다. 글을 작성하는 경우 등 해당 열을 구분하는 고유 번호가 있어야 하는데, 이 고유 번호를 생성하는 용도로 주로 사용한다.
  • 표현식
    CREATE SEQUENCE 시퀀스명
    ① [START WITH 숫자] : 처음 발생시킬 시작 값, 기본값 1
    ② [INCREMENT BY 숫자] : 다음 값에 대한 증가치, 기본값 1
    ③ [MAXVALUE 숫자 | NOMAXVALUE] : 발생시킬 최대값, 10의 27승-1까지 가능
    ④ [MINVALUE 숫자 | NOMINVALUE] : 발생시킬 최소값, -10의 26승
    ⑤ [CYCLE | NOCYCLE] : 시퀀스가 최대값까지 증가 완료 시 CYCLE은 START WITH설정 값으로 돌아가지만 NOCYCLE는 에러가 발생한다.
    ⑥ [CACHE | NOCACHE] : CACHE는 메모리 상에서 시퀀스 값을 관리, 기본값 20, 설정하지 않는 경우 기본 값이 20이기 때문에 어느 순간 20이 증가하기도 하므로 설정하는 것이 좋다.
  • 사용자 생성 시퀀스 확인 방법
    SELECT * FROM USER_SEQUENCES;
  • 시퀀스 사용
    • 시퀀스명.CURRVAL: 현재 생성된 시퀀스 값을 반환한다. 이는 NEXTVAL에 의해 마지막으로 리턴된 값이기 때문에 임시 값이다. 따라서 처음에 CURRVAL을 실행하는 경우 최초 값이 존재하지 않기 때문에 에러가 발생한다.
    • 시퀀스명.NEXTVAL: 시퀀스를 증가시키거나 최초로 시퀀스를 실행시키는 역할을 한다.
    • NEXTVAL/CURRVAL 사용 가능 여부
  • 시퀀스 변경 시 ALTER를 사용하여 변경하며, CREATE 시 사용한 옵션을 변경 가능하다. 단, START WITH는 변경 불가능하기 때문에 해당 부분을 변경하기 위해서는 DROP 후 다시 생성하여야 한다.

'JAVA 웹 개발 > 2. Oracle' 카테고리의 다른 글

11. PL/SQL  (0) 2022.08.13
09. VIEW  (0) 2022.08.13
08. DDL(ALTER, DROP)  (0) 2022.08.13
07.DML(INSERT, UPDATE, DELETE)  (0) 2022.08.13
06. DDL(CREATE)  (0) 2022.08.13