Oracle da otomatik artan numara oluşturmak, MS-SQL de olduğu gibi hızlı ve kolay
değil. Oracle da otomatik artan ve unique numara oluşturmak için "sequence" oluşturmek gerekmektedir.
Sequence için sözdimizi şu şekildedir:
CREATE SEQUENCE sequence_ismi
MINVALUE min_degeri | NOMINVALUE
MAXVALUE max_degeri | NOMAxVALUE
START WITH baslama_degeri
INCREMENT BY artis_dergeri
CYCLE | NOCYCLE
CACHE cache_degeri | NOCACHE;
ORDER |NOORDER
1. sequence_ismi: oluşturacağımız sequence bir isim veririz egitim_seq gibi
2. INCREMENT BY: artis_degeri; sayıların artış miktarını içerir.Varsayılan değeri 1 dir.
3. min değeri, sequence niin başlayacağı en küçük sayı değerini gösterir.
min_degeri baslama değerinden küçük yada eşit olmalıdır.Ayrıca min_degeri de
max_degerinden de küçük olmalıdır.
4. MINVALUE de yer alan NOMINVALUE varsayılan değerdir ve
artan sequenceler için değeri 1, azalan sequenceler için değeri ise -10^26 dir
5. CYCLE sequence oluşturması gereken max. değeri oluşturduktan
sonra sequence değeri max. değere ulaştıktan sonra değerin
başa dönüp dönmeyeceğini belirtir. NOCYLE da ise
ulaşması gereken son değere ulaştıktan sonra sequence başa dönmez varsayılan değer NOCYCLE dır.
6. CACHE : hafızada sequence için kaç tane sayı değeri tutacağını belirler. Böylece değerlere daha hızlı ulaşmış oluruz. Varsayılan değeri 20 dir. En az 2 değer tutulabilir.Max. kaç cache değerinin tutulabileceği CEIL(maximum_num - minimum_num)/ABS(increment_num) formulu ile belirlenir. NOCACHE olduğu zaman hafızada bir değer tutulmaz.
Sistemde bir hata meydana geldiği zaman yada database kapandığu zaman, cache ile tutuğumuz ve kullanmadığımız sequence ler kaybolacacaktır ve sistem tekrar çalışmaya başladığı zaman sequence kaldığı yerden devam edecek olup, aradaki değerler arada kaynayacaktır. Aradaki verileri kullanmak istiyorsak alter sequence komutu ile sequence yi yeniden düzenlememiz gerekmektedir.
7. ORDER: sayıların talep doğrultusunda sıralı bir şekilde oluşmasına
garanti verir. Varsayılan değeri NODEFAULT tır.
Sequence örneği:
CREATE SEQUENCE emp_seq
MINVALUE 1
START WITH 1
INCREMENT BY 1
NOCACHE;
Peki bu sequence si nasıl kullanacaz:
INSERT INTO emp ( empID,ename )
VALUES (emp_seq.nextval, 'özo')
Kaynak: java2s.com