2013-07-11 2 views
1

시퀀스 변수가 지정된 번호를 생성하지 않도록 제외 된 지정된 번호로 시퀀스를 생성 할 수 있습니까? 내가 SQL 문을 사용하여 다음 순서를 만들 수 있어요오라클 시퀀스는 지정된 번호를 제외합니다

CREATE SEQUENCE s_test; 

CREATE SEQUENCE s_test2 
START WITH 10 INCREMENT BY 5 
MINVALUE 10 MAXVALUE 20 
CYCLE CACHE 2 ORDER; 

I이 사용이 일부 테이블을 만들고 테이블의 순서와 THS ID를 사용하기 전에 사용한다는 것입니다 필요한 이유는 2,5,99,101을 말할 수 . id 1,3,6 ... 98,100이 사용될 수 있고 102에서 시퀸스 시퀀스로 사용할 수 없기를 바랍니다.

일부 제외 번호 세트를 만드는 방법을 알고 싶습니다.

+0

https://forums.oracle.com/thread/905417 – rags

+1

1,300,6 ...을 건너 뛰면 왜 신경 쓰시겠습니까? 102에서 시작하십시오. 아무도 시퀀스가 ​​고밀도가 될 것이라고 기대해서는 안됩니다 (앞으로 나아가십시오. 캐싱으로 인해 숫자에 차이가 날 수 있습니다) – tbone

+0

그럴 경우 솔루션을 찾을 것으로 기대됩니다. 결국 우리는 모든 운영 체제만큼 복잡한 Oracle에 대해 이야기하고 있습니다. –

답변

2

글쎄, start with 옵션을 사용하면 원하는 특정 번호부터 시작하여 길을 따라 숫자를 건너 뛰어도됩니다.

고유 한 사용자 정의 함수를 만들어 원하는 값을 반환 할 수 있습니다.

또는 시퀀스의 nextval 당신이 건너 뛰려는 숫자 일 때, 다음과 같이 사용하여 값을 건너 뛸 수 있습니다 : 예를 들어,이 삽입 트리거에 가능할 것이다

alter sequence seq_name 
increment by 124; 

을 여기서 시퀀스는 id 값을 채우는 데 사용됩니다.

그러나 나는 왜 이렇게하고 싶은지에 관해 질문합니다. 시퀀스의 값은 일반적으로 id에 사용되는 의미없는 숫자입니다.

그런 다음 nextval 이미 사용중인 경우 확인하기 전에-삽입 트리거를 사용 : EDIT

. 그렇다면 그 값을 지나치게 증가하십시오.

+0

업데이트 됨 내 질문 –

관련 문제