Oracle Sequence Nedir?

Merhaba değerli okurlarım ,
Bugün 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
sequence.PNG

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.

seq2.PNG

Sequence değerlerini verdikten sonra Apply ile oluşturalım. Sonra da View SQL ile kod haline dökülmüş şekline bakalım.

seq3.PNG

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.

select EMPLOYEE_ID_SEQ.nextval from dual;
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
seq4.PNG

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;
seq5.PNG

Şimdi tablo oluşturup sequence’ı kullanalım.

CREATE TABLE tbl_seqdeneme(
emp_id NUMBER PRIMARY KEY,
Ad VARCHAR2(30),
soyad VARCHAR2(30));

Tabloya biraz insert yapalım.

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.

seq6.PNG

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.

” Kader, beyaz kağıda sütle yazıImış yazı; eIindeyse beyazdan, geI de sıyır beyazı! “

Ahmet Hamatoglu tarafından yayımlandı

Eğitim : Hacettepe Üniversitesi - Matematik Bölümü (2010-2014) Görev : Yazılım Mühendisi

Yorum bırakın