SEQUENCE'DE CYCLE KULLANIMI

Merhaba,

Daha önce sequence in ne olduğuna bakmıştık.Kısaca hatırlayacak olursak oracle db de tablolar için unique alan istiyorsak otomatik sayı üretimi için sequence kullanılır.Sequence başlangıç değerinden başlar ve bitiş değerine kadar gider.Her sequence çalıştırıldığı zaman son olan değer artması gereken değer kadar arttırılır.Normalde cycle kullanmadan bir sequence yaratalım ve daha sonra cycle kullanarak bir sequence yaratalım böylece sequence de cycle kullanımını daha iyi anlamış oluruz.

create sequence normal_sequence
minvalue 1
maxvalue 7
start with 1
increment by 1
cache 20;

Şimdi bu sequenci çalıştıralım.

select normal_sequence.nextval from dual;

bu sorguyu her çalıştırdığımızda sırayla 1,2,3,4,5,6,7 değerlerini alırız.Fakat 8.çalıştırdığımız zaman sequence için bir sonraki değer 8 olmuş olur ve maxvalue değeri olan 7 aşılmış olur.Bu durumda oracle “ORA-08004: sequence NORMAL_SEQUENCE.NEXTVAL exceeds MAXVALUE and cannot be instantiated” diye hata verecektir.

Aynı sequence i cycle ile yeni isimde create edelim.

create sequence cycle_sequence
minvalue 1
maxvalue 7
start with 1
increment by 1
cache 6
cycle;

Şimdi bu sequence i çalıştıralım.

select cycle_sequence.nextval from dual;

ilk 7 değer için diğer sequence ile aynı değerleri üretecektir.Yani 1,2,3,4,5,6,7 fakat 8. çalıştırığımız zaman hata vermeyecek ve yeniden sequence başa dönüp 1 değerini üretecektir.Burada dikkat edilmesi gereken bir diğer nokta cycle kullanıldığı sequence de cache değeri bir döngü değerinden küçük olmalıdır.
Share:
spacer

Hiç yorum yok:

Yorum Gönder