Sql Otomatik Numara Üretimi(Sequence)
Yaptığı iş unique sayılar üretmektir. Belli oranlarda arttırmalar yapılmakta kullanılır. Her çağrıldığında yeni bir sayı üretir. Extra bir hesaplama yapılmadan, seri olarak tanımlandığı şekilde rakamlar üretir. Sayıları cacheden okuduğu için çok hızlı sonuç üretir.
Yazılımı;
1
2
3
4
5
6
7
8
9
10
11
12
13
|
CREATE SEQUENCE kolon
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
|
INCREMENT BY n à Sayının artış miktarı belirtilir. Varsayılan değer 1’dir. Birer birer sayı arttırılır.
START WITH n à Numaranın üretileceği başlangıç numarasıdır. Varsayılan değer 1’dir.
MAXVALUE n à Numaranın alabileceği maksimum rakam yazılır. NOMAXVALUE ile bitiş numarası verilmez. Max = 1027
MINVALUE n à Numaranın alabileceği minimum rakam yazılır. NOMINVALUE ile başlangıç numarası verilmez. Min = 1
CYCLE | NOCYCLE à Maxvalue değeri kadar işlem yapıldıktan sonra işlemi tekrardan başlatır.Varsayılan değer NOCYCLE’dır.
CACHE à Cache sayısı kadar sayıyı hafızaya gönderir. Varsayılan değer NOCACHE=20’dir.
Örnek: Personel departmanının pers_id kolonunu 10’dan 50’ye kadar 2’şer 2’şer arttıralım;
1
2
3
4
5
6
7
8
9
10
11
|
CREATE SEQUENCE pers_id
INCREMENT BY 2
START WITH 10
MAXVALUE 50
NOCYCLE
NOCACHE
|
Örnek: Personel departmanının pers_id kolonunu birer birer arttıralım;
1
2
3
4
5
6
7
8
9
10
11
|
CREATE SEQUENCE pers_id
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE
|
USER_SEQUENCES : Sequences’in en son durumu gösterir.
Yazılımı;
1
2
3
|
SELECT sequence_name, min_value, max_value, increment by, last_number
FROM user_ sequences
|
Sequence_name à İşlemlerin tanımlandığı isimdir.
Min_value à Sayının aldığı min değerdir.
Max_value à Sayının aldığı max değerdir.
Increment_by à Sayının aldığı artış miktarının gösterir.
Cycle_flag à İşlemin tekrar yapılması isteniyorsa Y, istenmiyorsa N değerini alır.
Cache_size à Hazıfazadaki cache sayısıdır.
Last_number à Numaranın alacağı değerdir
NEXTVAL : En son aldığı sayının bir sonra alacağı değeri gösterir.
Örnek: Personel tablosuna pers_id kolonuna otomatik değerler atayarak kayıt edelim;
1
2
3
|
INSERT INTO personel
VALUES (pers_id.NEXTVAL,’Ahmet’,’Sarı’)
|
CURRVAL : O anki sayısal değeri gösterir. Eğer hiç nextval fonksiyonu kullanılmamışsa değeri boş değer gelir.
Örnek: pers_id kolonunun o anki alacağı değeri seçelim;
1
2
3
|
SELECT pers_id.CURRVAL
FROM DUAL
|
ALTER_SEQUENCE : Değişiklik bir yerden başlanacaksa önce drop edilir, sequence işlemini değiştirir.
Yazılımı;
1
2
3
4
5
6
7
8
9
10
11
|
ALTER SEQUENCE kolon
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
|
DROP_SEQUENCE : Kolon için yaratılan işlemleri siler.
Yazılımı;
1
|
DROP SEQUENCE kolon
|
Leave a reply