PL/SQL Sequences Kullanımı

Merve KÜÇÜKDOĞRU
Machine Learning Turkiye
4 min readFeb 14, 2021

Bu yazımda Oracle’da kullandığımız sequence kavramından bahsedeceğim. Genel olarak id değerlerini yada istediğimiz herhangi bir kolonu otomatik artan olarak ayarlamak isteyebiliriz. Sql Server’da otomatik artan kolon oluşturmak için Identity anahtar kelimesini kullanırız.

Örneğin Identity(1, 1) yazdığımızda 1'den başlayan ve birer birer artan sütun oluşturmak isteriz.

Şimdi Oracle’da sequence kullanımına bakalım.

Genellikle primary key(birincil anahtar) kolonlarında sıklıkla kullanırız. Hiç kullanmayanlar için sıra numarası olarak da düşünebiliriz.

Sequence tanımlamamızın amacı id kolonunu benzersiz yapmak ve her kayıt eklendiğinde o kolona otomatik olarak değer aktarmaktır.

Sequence tablolardan bağımsız olarak oluşturulur, böylece aynı sequence bir veya birden fazla tablo için kullanılabilir. Oluşturulan ve sonunda geri alınan bir işlemde kullanılan tek sıra numaralarının atlanmış gibi görünmesi mümkündür.

Şimdi örnek olması açısından bir tablo oluşturalım ve onun üzerinden gidelim.

Sequence oluşturmak için temel DDL(Data Definition Language) işlemlerinden CREATE komutunu kullanırız

Temel kullanımı aşağıdaki gibidir.

CREATE SEQUENCE SCHEMA_NAME.SEQUENCE_NAME;

Sequence başarılı bir şekilde oluştu. Çalıştığımız veri tabanının “Sequnences” sekmesinden inceleyebilirsiniz.

Şimdi veritabanına kayıt ekleyelim ve çalışıp çalışmadığına bakalım.

Sequence nesnesinden bir sonraki değeri almak için NEXTVAL ifadesini kullanırız.

Şimdi tablomuza bakalım.

Şekilde de gördüğünüz gibi ID kolon değeri otomatik artan olarak ayarlanmıştır.

Şimdi sequence parametrelerini inceleyelim.

INCREMENT BY

☆ Sequence değerinin artış miktarıdır.

☆ Varsayılan olarak birer birer artar.

☆ Azalan yada artan değer verilebilir. Örneğin -1 değerini verirsek kolon değerimiz her kayıtta birer birer azalır.

START WITH

☆ Sequence başlangıç değeridir.

☆ Minimum değerden daha büyük değerde artan bir sıralama olabilir.

☆ Maksimum değerden daha düşük bir değerde azalan bir sıralama yapmak için de kullanabiliriz.

☆ Artan sequence için varsayılan değer, sequence minimum değeridir.

☆ Azalan sequence için varsayılan değer, sequence maksimum değeridir.

☆ Maksimum 28 basamak olabilir.

MAXVALUE

☆ Sequence maksimum değeridir.

☆ MAXVALUE, START WITH değerine eşit veya daha büyük olmalıdır.

☆ MAXVALUE, MINVALUE değerinden büyük olmalıdır.

☆ Maksimum 28 basamak olabilir.

MINVALUE

☆ Sequence minimum değeridir.

☆ START WITH değerine eşit veya küçük olmalıdır.

☆ MAXVALUE değerinden küçük olmalıdır.

☆ Maksimum 28 basamak olabilir.

CYCLE

☆ Sıranın maksimum veya minimum değerine ulaştıktan sonra değerleri oluşturmaya devam ettiğini belirtmek için kullanılır.

☆ Artan bir sıralama maksimum değerine ulaştıktan sonra minimum değerini oluşturur.

☆ Azalan bir sıralama minimum değerine ulaştıktan sonra, maksimum değerini oluşturur.

CACHE

☆ Veritabanının önceden ayırdığı ve daha hızlı erişim için bellekte tutulan sequence değerini belirtmek için kullanılır.

☆ Maksimum 28 basamak olabilir.

☆ Bu parametre için minimum değer 2'dir.

☆ Döngüdeki sequence nesneleri için bu değer döngüdeki değer sayısından az olmalıdır.

☆ Varsayılan CACHE parametre değeri 20'dir.

NOMAXVALUE

☆ Artan sequence için maksimum 1027 değeri, azalan sekans için -1 değerini belirtmek için NOMAXVALUE parametresini kullanabiliriz.

NOMINVALUE

☆ Artan sequence için minimum 1 değeri, azalan sekans için -1026 değerini belirtmek için NOMINVALUE parametresini kullanabiliriz.

NOCYCLE

☆ Sıralamanın maksimum veya minimum değerine ulaştıktan sonra daha fazla değer oluşturamayacağını belirtmek için NOCYCLE parametresini kullanırız.

☆ Bu parametre varsayılan ayardır.

NOCACHE

☆ Sıra değerlerinin önceden atanmadığını belirtmek için NOCACHE parametresi kullanılır.

Yeni bir tablo oluşturup sequence nesnesini daha detaylı inceleyelim.

Şimdi yeni bir sequence ekleyelim.

Yeni oluşturduğumuz sequence değerininin doğru çalışıp çalışmadığını kontrol etmek için tabloya yeni kayıtlar ekleyelim.

Tabloya kayıt ekledikten sonra sequence eklediğimiz kolonun çalışıp çalışmadığını kontrol edelim.

Sequence nesnesinin paramtre değerlerini güncellemek için DDL işlemlerinden ALTER komutunu kullanırız. Temel kullanımı aşağıdaki gibidir.

ALTER SEQUENCE SCHEMA_NAME.SEQUENCE_NAME …;

Sequence artış miktarını değiştirmek istediğimizde;

Şimdi Dual tablomuz ile artış miktarının doğru çalışıp çalışmadığını kontrol etmek istersek;

Dual tablosu dummy adında varchar2(1) tipinde 1 bitlik tek kolondan ve X değeri bulunan bir satırdan oluşur.

Oluşturduğumuz sequence nesnesini veritabanıdan kaldırmak için DDL işlemlerinden DROP komutunu kullanırız. Temel kullanımı aşağıdaki gibidir.

DROP SEQUENCE SCHEMA_NAME.SEQUENCE_NAME;

Zaman ayırıp okuduğunuz için teşekkür ederim. Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek üzere…

--

--