Oracle 데이터베이스 생 성 표 ID 필드 자동 증가

시계 tuer 의 필드 ID 는 자체 증가 로 설정 되 어 있 습 니 다. (시퀀스 sequence 방법 으로 구현)
--- 생 성 표
Create table t_user(
Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6)
);

- 생 성 시퀀스
create sequence user_seq 


increment by 1 
start with 1
nomaxvalue
nominvalue
nocache


트리거 만 들 기
create or replace trigger tr_user
before insert on t_user
for each row
begin
select user_seq.nextval into :new.id from dual;
end;

테스트
insert into t_user(userid,loginpassword, isdisable)
values('ffll','liudddyujj', 0);
insert into t_user(userid,loginpassword, isdisable)
values('dddd','zhang', 0)
select * from t_user;

결 과 를 볼 수 있 습 니 다.
sequence 설명:
increment by: 시퀀스 증분 (기본 값: 1) 을 지정 하 는 데 사 용 됩 니 다. 정수 로 지정 하면 시리 얼 번호 가 자동 으로 증가 하고 마이너스 로 지정 하면 자동 으로 감소 합 니 다.
start with: 시퀀스 생 성기 생 성에 사용 되 는 첫 번 째 시퀀스 번 호 를 지정 합 니 다. 시퀀스 번호 순서 가 증가 할 때 기본 값 은 시퀀스 번호 의 최소 값 입 니 다. 시퀀스 번호 순서 가 감소 할 때 기본 값 은 시퀀스 번호 의 최대 값 입 니 다.
Maxvalue: 시퀀스 생 성기 가 생 성 할 수 있 는 최대 시퀀스 번호 (start with 보다 크 거나 같 아야 하 며 minvalue 보다 커 야 함) 를 지정 합 니 다. 기본 값 은 nomaxvalue 입 니 다.
Minvalue: 시퀀스 생 성기 가 생 성 할 수 있 는 최소 시퀀스 번호 (starr with 보다 작 거나 같 아야 하 며 maxvalue 보다 작 아야 함) 를 지정 합 니 다. 기본 값 은 nominvalue 입 니 다.
Cycle: 시퀀스 의 최대 값 이나 최소 값 에 도달 한 후에 시퀀스 번 호 를 계속 생 성 할 지 여 부 를 지정 합 니 다. 기본 값 은 nocycle 입 니 다.
Cache: 메모리 에서 미리 할당 할 수 있 는 시리 얼 번호 갯 수 를 지정 합 니 다 (기본 값: 20).
sequence 에서 주의해 야 할 것:
1. 첫 번 째 NEXTVAL 은 초기 값 을 되 돌려 줍 니 다.다음 NEXTVAL 은 사용자 가 정의 한 INCREMENT BY 값 을 자동 으로 증가 시 킨 다음 증가 한 값 을 되 돌려 줍 니 다.CURVAL 은 항상 현재 SEQUENCE 의 값 을 되 돌려 주지 만, 첫 번 째 NEXTVAL 이 초기 화 된 후에 야 CURVAL 을 사용 할 수 있 습 니 다. 그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.한 번 에 NEXTVAL 은 SEQUENCE 의 값 을 한 번 증가 시 킬 수 있 기 때문에 같은 문장 에 여러 개의 NEXTVAL 을 사용한다 면 그 값 은 다르다.
2. CACHE 값 을 지정 하면 ORACLE 는 메모리 에 sequence 를 미리 설치 하여 빨리 액세스 할 수 있 습 니 다.cache 에서 꺼 낸 후, Oacle 은 자동 으로 cache 로 한 그룹 을 더 가 져 옵 니 다.cache 를 사용 하면 데이터 베 이 스 를 갑자기 비정상적 으로 다운 (shutdown abort) 하면 cache 의 sequence 를 잃 어 버 릴 수 있 습 니 다. 따라서 create sequence 를 사용 할 때 nocache 로 이 를 방지 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기