Merhaba arkadaşlar, bu makalemizde otomatik artan ya da azalan numara olarak ifade edilen sequence (sekans) nesnesinin tanımını, oluşturulmasını (create edilmesini) ve oluşturulan sequence’in düşürülmesini (drop edilmesini) öğreneceğiz.
Sequence nesnesi kısaca, otomatik artan ya da azalan numara, sayı dizisi olarak tanımlanır. Özellikle primary key (birincil anahtar) ihtiyacına bağlı olarak bir unique number (benzersiz sayı) oluşturmak istediğimizde bu nesnenin özelliklerinden faydalanırız.
Oracle’da Sequence nesnesi oluşturmak için kullanacağımız sözdizimi aşağıdaki gibidir:
Sözdizimi (Syntax):
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;
sequence_name
Oluşturmak istediğiniz dizinin adı.
minvalue
Alabileceği en küçük değer.
maxvalue
Alabileceği en büyük değer.
start with
Değerin kaçtan başlayacağı belirtilir.
increment by
Değerin kaçar kaçar artacağı belirtilir.
cache
Performans amaçlı önbelleğe alınacak adet belirtilir.
Oracle’da otomatik artan ya da azalan bir sayı dizisini (sequence) nasıl oluşturabileceğimize dair bir örnek yapalım.
1’den başlayan ve 1’er 1’er 999999999999999999999999999 değerine kadar artan ve performans amaçlı 20’şer adet değeri önbelleğe alınmasını sağlayan örneği yapalım.
CREATE SEQUENCE musteri_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
Eğer MAXVALUE seçeneği kullanmazsanız, sıra otomatik olarak varsayılan değer olacaktır:
MAXVALUE 999999999999999999999999999
Böylece, CREATE SEQUENCE komutunu daha basitleştirerek aşağıdaki gibi yazabiliriz:
CREATE SEQUENCE musteri_seq
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 20;
Sequence nesnesini oluşturduğunuzda, bu sıra dizisinden değeri nasıl alabileceğimizi görelim. Belirtilen sequence nesnesinden sıradaki değeri alabilmek için nextval ifadesini kullanmamız gerekir.
Örneğin;
musteri_seq.NEXTVAL;
musteri_seq nesnesinden musteri_no alanına karşılık gelecek sıradaki değeri almak istiyorsanız bunu aşağıdaki gibi bir sql cümlesi içerisinde şu şekilde kullanmalısınız:
INSERT INTO musteriler (musteri_no, musteri_adi)
VALUES (musteri_seq.NEXTVAL, 'Tuncay Uyar');
Şu halde tabloda aşağıdaki gibi bir değer görüyor olacaksınız.
musteri_no |
musteri_adi |
1 |
Tuncay Uyar |
Benzer şekilde tekrar INSERT komutunu kullanarak tabloya ikinci bir kayıt attığımızda,
INSERT INTO musteriler (musteri_no, musteri_adi)
VALUES (musteri_seq.NEXTVAL, 'Bill Gates');
Bu durumda tabloda aşağıdaki gibi 2 adet değer olduğunu görüyor olacaksınız:
musteri_no |
musteri_adi |
1 |
Tuncay Uyar |
2 |
Bill Gates |