Oracle Sequence Nedir?

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
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.

Ahmet Hamatoğlu

1991 İzmir/Konak doğumluyum. Hacettepe Üniversitesi Matematik Bölümü 2014 mezunuyum. Yazılıma ilk olarak bölümde aldığım C++ dersi ile başladım daha sonra Java , Python ve C# dilleriyle geliştirmeler yaptım. Şu anda Yazılım Mühendisi olarak çalışıyorum. .Net ve Oracle teknolojileri üzerine çalışmalarımı sürdürüyorum. Elimden geldiği kadar bilgilerimi aktarmaya çalışıyorum. Junior seviyesinde olduğum için sitede bilgilerimi paylaşmamın araştırma yapmamı sağlamasının bana katkı sağlayacağını düşünüyorum. Sormak istediğiniz aklınıza takılan her konuda yardımcı olmaya çalışırım.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir