활용_
우선 간단한 시퀀스를 생성해보자. 시퀀스 문은 DDL 형식이기에 수정하려면 삭제후 재 생성을 해야하기에 생성시 주의하며 생성하여야 한다.
SQL> create sequence b_emp5_empno;
시퀀스가 생성되었습니다.
이렇게 생성이 되며, 해당 시퀀스 옵션은 default 적용이 되어 시작값 1,증가치 1로 적용이 되어 생성이 된다.
미리 만들었던 b_dept2에 적용을 시켜보자.
SQL> create sequence b_dept2_deptno;
시퀀스가 생성되었습니다.
**중요**
시퀀스명.속성명(currval or nextval)
1. currval : 현재값을 반환 (현재 설정된 값을 확인) => nextval을 통해서 저장된 값을 확인 및 호출 하는 명령어
2.nextval : 현재 지정된 시퀀스 값의 다음번 값을 반환 (확인) => 새로운 값을 입력하고 생성하는 명령어 [중복되지않게]
**중요**
마찬가지로 아무 문제 없이 생성이 되었으나, 우리는 여기서 활용을 하려고 하는것이다. 활용전 중요한 시퀀스 속성 2가지를 짚고 넘어가자.
SQL> select b_dept2_deptno.currval from dual;
select b_dept2_deptno.currval from dual
*
1행에 오류:
ORA-08002: 시퀀스 B_DEPT2_DEPTNO.CURRVAL은 이 세션에서는 정의 되어 있지
않습니다.
문법에 맞게 명령하였으나 오류가 발생한다. 해당 오류의 이유는 데이터가 없는 테이블이기 때문에 실행이 되질 않는다. 처음에 만들때에는 어떠한 값도 저장이 되질 않기 때문에 당연히 불러오는 명령을 해봐야 불러올 값이 없기때문에 오류가 나는 것이다.
시퀀스를 생성하자마자 바로 currval 확인이 불가함. 즉 값을 먼저 넣어야만이 조회가 가능하다. 이때 사용되는것은 "nextval" 이다. 또한 "nextval"은 중복되지 않게 값을 만들어서 넣어주는 역할이다.
SQL> select b_dept2_deptno.nextval from dual; // 값 생성
NEXTVAL
----------
1
nextval을 이용하여 값을 넣었으니 아래와같이 currval을 사용하여도 오류가 나지 않는다.
SQL> select b_dept2_deptno.currval from dual;
CURRVAL
----------
1
그리고 추가적으로 nextval을 반복적으로 호출하게되면 증가치에 따라 값이 늘어난다.
'Oracle > Index, Sequence, Synonym' 카테고리의 다른 글
데이터 베이스_ 오라클 [Sequence] 활용 3 수정 (0) | 2019.07.03 |
---|---|
데이터 베이스_ 오라클 [Sequence] 활용 2 currval, nextval (0) | 2019.07.03 |
데이터 베이스_ 오라클 [Sequence] 개요 (0) | 2019.07.03 |
데이터 베이스_ 오라클 [INDEX] 활용2 인덱스 삭제 (0) | 2019.07.03 |
데이터 베이스_ 오라클 [INDEX] 활용 1 (0) | 2019.07.03 |
댓글