시퀸스
Sequence
유일한 값을 생성해주는 오라클 객체이다.
일련번호, 자동증가 값을 생성한다.
시퀀스는 독립적으로 테이블과 별개로 동작한다.
모든 DBMS에서 사용하는 것은 아니다.
시퀀스는 메모리에 Cache하여 성능을 향상 시킬 수 있다.
NEXTVAL 및 CURRVAL 사용가능 조건
서브쿼리가 아닌 SELECT절
INSERT문의 SELECT절
INSERT문의 VALUE절
UPDATE문의 SET절
NEXTVAL 및 CURRVAL 사용불가 조건
VIEW의 SELECT절
DISTINCT 키워드가 있는 SELECT문
GROUP BY, HAVING, ORDER BY절이 있는 SELECT문
SELECT, DELETE, UPDATE의 서브쿼리
CREATE TABLE, ALTER TABLE 명령의 DEFAULT값자동으로 증가하는 컬럼을 PK로 잡거나 할떄 INSERT시 자동 증가로 시퀀스를 사용하지만 MAX+1을 사용할 때도 있다.
MAX+1
하지만 MAX+1은 동시성보장이 되지않아 insert 시 다른 트랜잭션에의해 중복값이 등록 될 수 있어 주의해야한다.
동시성 제어란 여러 명의 사용자가 동시에 행을 업데이트할 때 데이터베이스의 무결성을 유지하기 위해 사용되는 여러 가지 기술을 말합니다. 잘못된 동시성으로 인해 커밋되지 않은 읽기, 가상 읽기, 반복되지 않는 읽기와 같은 문제가 발생할 수 있습니다.
사용하는 방법
SELECT NVL(MAX(증가컬럼)+1,0) FROM 테이블)
위 구문을 INSERT VALUE 절에 넣어주면 된다.