728x90
반응형
시퀀스란 ?
Sequence는 고유한 숫자 값을 자동으로 생성하는 객체이다.
주로 기본 키 값이나 고유한 식별자를 생성하는 데 사용된다.
- 고유성
- 시퀀스는 생성된 숫자가 항상 고유하도록 한다.
- 이는 DB에서 각 행을 구분하는 데 중요한 역할을 한다.
- 자동 증가
- 미리 정의된 규칙에 따라 자동으로 숫자를 증가시킨다.
- 원하는 증가 단위를 설정할 수 있다.
- 구성 가능성
- 시퀀스는 다양한 속성을 설정할 수 있다.
- MINVALUE : 생성 가능한 최소값
- MAXVALUE : 생성 가능한 최대값
- INCREMENT BY : 시퀀스 값의 증가 단위
- CYCLE : 최대값에 도달했을 때 다시 최소값으로 돌아가는지 여부
- CACHE : 메모리에 미리 생성해 둘 숫자의 수
- 시퀀스는 다양한 속성을 설정할 수 있다.
- 장점
- 자동화 : 수동으로 값을 관리할 필요가 없어 관리가 용이하다.
- 성능 향상 : 미리 값을 캐시하여 성능을 향상시킬 수 있다.
1. 시퀀스 조회
모든 시퀀스 조회
SELECT *
FROM ALL_SEQUENCES
;
시퀀스 이름으로 조회
SELECT *
FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = 'SEQ_A'
;
2. 시퀀스 생성
기본 시퀀스 생성 : 0부터 시퀀스 시작, 캐시없음
CREATE SEQUENCE SEQ_A
MINVALUE 0
MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
NOCYCLE
NOCACHE;
32부터 시작, 캐시 크기 20으로 설정
CREATE SEQUENCE SEQ_COUPON_SEND
MINVALUE 32
MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
NOCYCLE
CACHE 20; -- 캐시 크기를 20으로 설정
3. 시퀀스 삭제
기존 31개의 데이터가 존재하는 상태에서 시퀀스를 생성한 후,
2개의 데이터를 삽입했는데 NO가 기존 값과 겹치는 것이었다.
MIN_VALUE를 32로 설정하면 값이 겹치지 않는데, 거기까지는 생각을 못했었다.
MIN_VALUE만 수정하는 것은 불가능해서 삭제하고 다시 시퀀스를 설정하는 방법이 있고,
데이터가 별로 없을 때는 나머지 INSERT문으로 추출해서 백업시키고 삭제 후 다시 데이터를 삽입하여 재정렬하는 방법이 있다.
난 데이터가 별로 없어서 후자를 선택했으나, 시퀀스 삭제 쿼리문을 알아보겠다.
시퀀스 삭제
DROP SEQUENCE SEQ_A
;
4. 시퀀스 데이터 삽입
시퀀스가 포함 된 데이터 삽입
INSERT INTO A (no, name)
SELECT SEQ_A.nextval, 'ABC'
FROM dual
;
728x90
반응형
'[Language] > SQL' 카테고리의 다른 글
[MySQL] 스키마, 테이블, 컬럼의 character, collation을 UTF8로 변경하기 (0) | 2024.07.26 |
---|---|
[Oracle] ORA-17800: 읽은 호출에서 -1을 가져왔습니다. (1) | 2024.07.02 |
SQL Error [933] [42000]: ORA-00933: SQL command not properly ended (0) | 2024.07.01 |
[Oracle] 결과값 표시 제한 (LIMIT, ROWNUM) (0) | 2024.07.01 |
[Oracle] NVL(컬럼명, '값') (0) | 2024.07.01 |