-
시퀀스 (SESQUNE)SQL 2020. 2. 11. 11:34
SERQUENCE
정의
- 중복되지 않은 정수값을 리턴해주는 오라클 객체
왜?
- 데이터에 key 컬럼은 값이 유일해야 하기 때문에
-> 유일한 값을 만드는방법
1. key table (미리 값을 정의 해둔 테이블)
2. uuid (랜덤한 32자리수의 문자열을 반환해주는 함수)
3. SEQUENCE 생성 :
생성 방법
CREATE SEQUENCE 시퀀스_이름
[OPTION ...]
1.
[ORDER N]
명명규칙
SEQ_사용할 테이블명
* 일반적인 명명규칙임
시퀀스 제공 함수
- NEXTVAL : 시퀀스에 다음 값을 가져올 때 사용
한번더 실행하면
- CURRVAL : NEXTVAL를 사용하고나서 현재 읽어 들인 값을 재확인
시퀀스 결과 값을 테이블에 삽입 가능
주의점
위 사진처럼 NEXTVAL를 실행하고 INSERT해서 결과 값을 넣으면 구멍이 생긴 것 처럼 4가 없어짐
-> ROLLBACK도 안되고 뭣도 안됌
근데 값들을 유일하게 구별할 수 있는 원 기능에는 별 상관없지만
시각적으로 보여주는게 중요한 작업에서는 다른 방법을 채택해야함
오라클 tool - 시퀀스에서 확인할 수 있는 정보
INCREMENT_BY : 1 시퀀스 증가치 (1씩 증가)
START WITH N : 시퀀스 시작값 (N부터 시작) * 보통은 DROP하고 시퀀스 재생성함
CYCLE_FLAG : 반복할지 안할지 여부
ORDER_FLAG :
CACHE_SIZE : UNIQUE한 값을 생성해야 하므로 동시성 제어가 필요
즉, 시퀀스 객체에 접근하기 위한 LOCK이 필요한데 메모리에 미리 올려두어 LOCK 경합을 해소
단, 캐싱된 시퀀스 값들은 이미 사용이 된것
LAST_NUMBER : 마지막으로 값이 읽혀질 대상 ( 사용할때마다 값이 바뀜)
'SQL' 카테고리의 다른 글
INDEX 설계 (0) 2020.02.12 INDEX와 TABLE (0) 2020.02.11 VIEW (0) 2020.02.11 주석 확인 / 생성 (0) 2020.02.11 테이블 변경 (0) 2020.02.10