Merhaba ,
Bu yazıda Oracle sequence (Okunuşu : Sekans) hakkında bilgi vereceğim.
Sequence : Oracle’da azalan veya artan sıralı (genelde artan) sayısal değerleri oluşturmaya yarayan nesnedir. MS SQL de identity kolonu bu işi otomatik yapar , fakat Oracle’da bu özellik olmadığından sequence kullanılır. Bir tablonun primary key sütununa unique değerler eklemek için kullanırız genellikle. Sequence’ler data dictionary de tutulurlar.
Data Dictionary : Veritabanında tutulan her türlü objenin metadata’sının tutuldugu yerdir. Aynı zamanda DBMS hakkında bilgilerde burada tutulmaktadır.
Metadata : Bir veri hakkındaki verilerdir. Belirli bir veri seti hakkında nasıl, ne zaman ve kim tarafından oluşturulduğu gibi hakkında tanımlayıcı bilgiler içerir.
PL/SQL Developer kodla oluşturduğumuz gibi direk mouse ile de sequence oluşturabiliriz.
File -> New -> Sequence
Karşımıza yukarıdaki gibi bir ekran çıkacaktır. Burada istenilen bilgileri doldurmamız gerekir.
- Start With : Sequence’ın kaçtan başlamasını istiyorsak belirtiriz. Default 1’dir.
- Cylce : Sınıra ulaşan sequence’a yeniden başlamasını belirtir. Default değeri NoCycle’dır.
- Max Value : Artarak giden sequence’a gidebileceği son değeri belirtir.
- Min Value : Azalarak giden sequence’a gidebileceği son değeri belirtir.
- Name : Sequence’a verdiğimiz isimdir. Örnek : EMPLOYEE_ID_SEQ
- Owner : Giriş yaptığımız sistem olması gerekir.
-
Increment By: Sequence’ın kaçar kaçar artacağını ve azalacağını belirtir.
+1 değerini verirseniz sequence’ı birer birer artacaktır.
-1 değerini verirseniz sequence’ı birer birer azalacaktır.
Sequence değerlerini verdikten sonra Apply ile oluşturalım. Sonra da View SQL ile kod haline dökülmüş şekline bakalım.
cache = 20 değerini otomatik kendi verdi.
CACHE : Sistemde bir hata olunca cachede tutulan ve kaybolan numaraları tekrar kullanmak istiyorsak.
NOCACHE : Sürekli güncel numarayı üretir, sequence’ın performansı düşüktür.Ama üretilen sayılar arasında kopukluk yoktur.
İstersek NoCache yapadabiliriz ama şu aşamada gerek yok.
NEXTVAL: Sequence’ın sıradaki değeri üretmesi sağlanır.Ve her select ettiğinizde değeri değişir.
[sql]select EMPLOYEE_ID_SEQ.nextval from dual;
[/sql]F8 ile bir kere basarsak çıktımız : 1
F8 ile iki kere basarsak çıktımız : 2
F8 ile üç kere basarsak çıktımız : 3
vb. artış değerimiz 1 olduğundan kaç kere basarsak o çıktımızı alırız.
CURRVAL: Sequence’ın sıradaki değerini gösterir. Select çektiğinizde değeri aynı kalır.
select EMPLOYEE_ID_SEQ.CURRVAL from dual;
Şimdi tablo oluşturup sequence’ı kullanalım.
[sql]CREATE TABLE tbl_seqdeneme(
emp_id NUMBER PRIMARY KEY,
Ad VARCHAR2(30),
soyad VARCHAR2(30));
Tabloya biraz insert yapalım.
[sql]INSERT INTO tbl_seqdeneme
VALUES(EMPLOYEE_ID_SEQ.nextval,’Ahmet’,’Hamat’);
INSERT INTO tbl_seqdeneme
VALUES(EMPLOYEE_ID_SEQ.nextval,’Ahmet’,’Hamatoglu’);
INSERT INTO tbl_seqdeneme
VALUES(EMPLOYEE_ID_SEQ.nextval,’Ahmet’,’Hamoglu’);
INSERT INTO tbl_seqdeneme
VALUES(EMPLOYEE_ID_SEQ.nextval,’Ahmet’,’Matoglu’);
- İlk başta Sequence değerini 4 e kadar getirmiştir ondan 5’ten başlayacak.
Sequence’ı silmek için : DROP SEQUENCE EMPLOYEE_ID_SEQ; yazarız.
Sequence hakkında bilgi vermeye çalıştım umarım yararlı olur.
İyi çalışmalar.