Drop Database

Sequence 이용

한알두알 2007. 10. 18. 14:20

☞ Sequence 이용 
● 시퀀스를 만들면 테이블에서 사용할 순차적인 번호를 생성하기 위해 시퀀스를 이용할 수 있다.
● NEXTVAL과 CURRVAL Pseudocolumn을 써서 Sequence 값을 참조하라.
 


           ♠ 질의 예제 : 지역2에 "Finance"라는 입력을 삽입하라.


     SQL>INSERT INTO s_dept(id, name, region_id)
          2   VALUES (s_dept_id, NEXTVAL, 'Finance', 2):
      1 row selected.
 


           ♠ 질의 예제 : S_DEPT_ID Sequence에 대한 현재 값을 보라.

     SQL>SELECT s_dept_id,CURRVAL
        2   FROM SYS,dual; 

 

☞ NEXTVAL과 CURRVAL Pseudocolumn 
     ● NEXTVAL은 사용 가능한 다음 시퀀스값을 반환한다.
       - 매번 고유한 값을 반환한다.
     ● CURRVAL은 현재 시퀀스값을 구한다.
        -CURRVAL은 NEXTVAL사용 후에 사용되어야 한다.
     ● 사용규칙을 따르라.

 

 

♣ NEXTVAL과 CURRVAL 의사 Pseudocolumn 
▶ NEXTVAL Pseudocolumn은 명시된 Sequence에서 다음 값을 추출하는데에 사용된다. Sequence명.NEXTVAL을 참조하면 새로운 번호가 생성되고 CURRVAL은 현재의 시퀀스 번호 값을 갖는다. CURRVAL이 참조되기 전에 현 사용자의 세션에서 NEXTVAL이 이용되어야 합니다. Sequence명,CURRVAL이 참조되면 사용자 프로세스에 사용된 최종 Sequence값이 출력된다.

 
 


♣ NEXTVAL과 CURRVAL 사용규칙 
▶ 다음에서 NEXTVAL과 CURRVAL을 사용할 수 있다.
- Subquery가 아닌 SELECT 문의 SELECT List
- INSERT 문의 Subquery SELECT List
- INSERT 문의 VALUE 절
- UPDATE 문의 SET 절
 
▶다음에서 NEXTVAL과 CURRVAL을 사용할 수 없다.
- 뷰의 SELECT List
- DISTINCT 키워드가 있는 SELECT 문
- GROUP BY, HAVING, 또는 ORDER BY 절이 있는 SELECT 문
- SELECT, DELETE, 또는 UPDATE 문의 Subquery
- CREATE TABLE 또는 ALTER TABLE 명령의 DEFAULT 값
 
※자세한 설명은 Oracle7 Server SQL Reference, Release 7.2, "Pseudocolumn" 절과 "CREATE SEQUENCE"을 보라 


 
♣ Sequence 값의 캐슁 
▶ Sequence를 메모리에 캐쉬하면 Sequence 값을 더 빨리 액세스할 수 있다. 다음 Sequence값을 요구하면 캐쉬된 Sequence에서 return해 준다. 
 

 

 
♣ 증가 없이 다음 시퀀스 값 보기 
▶ NOCACHE로 Sequence가 생성될 경우에만 USER_SEQUENCES 테이블을 query를 하여 다음 Sequence값을 볼 수 있다.