| ☞ Sequenc 생성 | ||
| ● 자동적으로 순차적인 숫자를 생성하기 위해 Sequenc를 정의한다. | ||
|
| ♣ Sequenc 생성 | |
|
|
| ♣ Sequence 생성 : 예 | |
| ♠ 질의 예제 : s_dept 테이블의 dept_id column 에 사용할 sequence인 s_dept_id를 만들라. sequence는 51에서 시작 한다. 캐쉬와 cycle을 하지 않게 하라.
※Sequence가 Primary Key값을 생성한다면 CYCLE 옵션을 쓰지 말라. |
| ☞ Sequence 확인 |
| ● Sequence를 생성하면 data dictionary에 기록된다. ● Sequence가 데이터베이스 객체이므로 USER_OBJECTS dictionary에서 볼 수 있다. ● 데이터 사전의 USER_SEQUENCES 테이블을 참조하면 설정된 사항을 확인할 수 있다. |
| ♠ 질의 예제 : 자신이 소유한 모든 Sequence 정보를 출력하라. | |
|
|
|
|
|
| ▶ LAST_NUMBER column은 사용가능한 다음 순서 번호를 출력합니다. |
| ☞ 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과 CURRVAL 사용규칙 |
▶ 다음에서 NEXTVAL과 CURRVAL을 사용할 수 있다.
- INSERT 문의 Subquery SELECT List - INSERT 문의 VALUE 절 - UPDATE 문의 SET 절 |
▶다음에서 NEXTVAL과 CURRVAL을 사용할 수 없다.
- 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에 대한 MAXVALUE 한계에 도달하면 Sequence에 대한 추가적인 값이 할당되지 않게 되고 Sequence가 MAXVALUE를 넘었음을 알리는 오류 메시지를 받게 됩니다. 이때Sequence를 계속 사용하려면 ALTER SEQUENCE 명령을 써서 수정할 수 있다. |
| ♣ Syntax | ||
|
| ♣ Guidelines |
| ▶자신의 Sequence이거나 Sequence에 대한 ALTER 권한을 가져야만 Sequence를 수정할 수 있다. ▶아직 생성되지 않은 시퀀스값만이 ALTER SEQUENCE명령에 영향받는다. ▶유효성 검사를 하게 된다. 예를 들어 새로운 MAXVALUE는 현재의 순서 번호보다 작지 않아야 한다. ▶START WITH 옵션은 ALTER SEQUENCE를 써서 변경할 수 없다. 다른 번호에서 다시 시작하려면 이전 시퀀스를 삭제하고 다시 생성해야 한다. |
※자세한 설명은 Oracle7 Server SQL Reference, Release 7.2 "ALTER SEQUENCE"을 보라.
| ☞ Sequence 삭제 | |
| ● DROP SEQUENCE명령을 사용하여 Sequence를 삭제한다. ● Sequence가 삭제되면 더 이상 참조할 수 없다. ● Sequence를 제거할 DROP ANY SEQUENCE 권한을 가지고 있거나 그 시퀀스의 소유자이어야 한다. |
|
|
| ♣ Syntax | ||
|
||
| ※자세한 설명은 Oracle7 Server SQL Reference, Release 7.2 "DROP SEQUENCE"를 보라. |
| ☞ sequence 요약 |
| ● Sequence 사용하여 테이블의 행에 대한 primary key 값을 자동으로 생성한다. ● 데이타베이스 객체인 Sequence를 다른 사용자들과 공유할 수도 있다. ● USER_SEQUENCES 테이블에 있는 정보를 참조할 수 있다. ● Sequence.NEXTVAL을 이용하여 다음 값을 Return 받는다. ● Sequence.CURRVAL을 이용하여 NEXTVAL 에 의해 Return된 마지막 값을 확인할 수 있다. |



