Sequence nedir ve nasıl oluşturulur

27 Oca by NURULLAH ÇAKIR

Sequence nedir ve nasıl oluşturulur

Sequence SQL Server’daki identity mantığına benzer tablo bağımsız bir yapıdır. Üretilen sequence’i birden fazla tabloda kullanabilirsiniz. Identity ile ilgili detaylı bilgi almak için  “Identitiy column ve manual olarak bu kolona insert yapmak(Identitiy insert)” isimli makaleme göz atmak isteyebilirsiniz.

Sequence ile belirli değerler arasında numeric ve sıralı sayılar üretilir. Birden fazla tabloda aynı sequence’i kullanarak farklı tablolar için birbirini takip eden sayılar üretilebilir.

Sequence’i daha yakından tanımak için bir örnek üzerinden gitmek daha doğru olacaktır. Örneğin aşağıdaki örnekte;

 

SeqOrnek isminde,

Integer tipinde,

1 değerinden başlayan,

1 er 1 er artan,

Minimum değeri 1 olan,

Maksimum değeri 99 olan,

99 değerine ulaştığında yeniden 1 değerinden başlamayan,

Ve sequence’e ait sayıları cache’de tutmayan bir sequence oluşturuyoruz.

 

NO CACHE yerine CACHE 30 deseydik 1 den 30’a kadar olan sayıları cache’e alacaktı ve 30’a geldiğinde 30’dan 60’a kadar olan sayıları tekrar cache’e alacaktı. Daha az IO yapmak için CACHE değeri vermek performans açısından iyi gibi gözüksede performansı gözle görülebilir derecede artırmadığı görülmekle birlikte, sunucu beklenmedik şekilde kapanırsa cache’de sayıların kaybolmasına yol açabilir.

 

Sequence’i oluşturduktan sonra kullanmaya başlayalım.

Tablo oluştururken aşağıdaki şekilde kullanabiliriz.

 

Ya da mevcut bir tabloya aşağıdaki şekilde ekleyebiliriz.

 

Yada tabloya eklemeyip insert cümleciğinin içinde bu değeri sequence’den alabiliriz.

 

 

Sequence’i ALTER ederek belli bir değerden sonra başlaması için yeniden programlayabiliriz.

 

Üçüncü kaydımızı ekleyecek insert’ü yapıp tablodan bir select çekip sequence’den gelen ID değerlerini görelim.

Gördüğünüz gibi 70’den başlayacak şekilde sequence’i yeniden programladıktan sonra İZMİR kaydını eklediğimiz için İZMİR’in ID değeri 70 oldu.

 

Var olan sequence’leri aşağıdaki şekilde görebilirsiniz.

 

Bir cevap yazın

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

Lütfen captcha kodunu giriniz *

Lütfen Resimdeki Kodu Boşluğa Giriniz.