Oracle 에 서 는 트리거(trigger)와 시퀀스(sequence)를 사용 하여 자체 증가 열 인 스 턴 스 를 모 의 합 니 다.

문제:SQL Server 데이터베이스 에 서 는 이 필드 속성 을 추가 하여 사용 하기에 도 편리 합 니 다.오 라 클 에는 이런 기능 이 없 는데 어떻게 실현 해 야 할 까?
답:Oracle 에 서 는 자체 증 열 설 은 없 지만 트리거(trigger)와 시퀀스(sequence)를 통 해 모드 를 실현 할 수 있 습 니 다.
예시:
1.작성 표
create table user  
(  
    id   number(6) not null,  
    name   varchar2(30)   not null primary key 
2.시퀀스 구축 SEQUENCE

create sequence user_seq increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 nocache order; 
문법:
CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
--INCREMENT BY 1    -- 매번 몇 개 씩 추가 합 니까?
--START WITH 1      -- 1 부터 계산 합 니 다.
--NOMAXVALUE        -- 최대 값 을 설정 하지 않 음
--NOCYCLE       -- 계속
--CACHE 10;     -- 캐 시 시퀀스 갯 수 는 효율 을 높이 는 데 도움 이 되 지만 점프 번 호 를 만 들 수 있 습 니 다.
3.트리거 생 성
이 표를 기반 으로 한 before insert 트리거 를 만 들 고 트리거 에 새로 만 든 SEQUENCE 를 사용 합 니 다.
create or replace trigger user_trigger   
before insert on user 
for each row  
begin 
      select   user_seq.nextval  into:new.id from sys.dual ;  
end; 
다음은 데이터 테스트 를 삽입 할 수 있 습 니 다.본인 의 증명 을 거 쳐 상술 한 방법 은 실행 가능 하 다.

좋은 웹페이지 즐겨찾기