SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için yaygın olarak kullanılan bir dildir. SQL fonksiyonl...
SQL Server Sequence Kullanımı
Veritabanında yeni keşfettiğim Sequence özelliğini sizlerle paylaşmak isterim. Squence genel olarak belirli değerler arasında numeric ve sıralı sayılar üretir. Aynı Sequence’i kullanarak farklı tablolar için birbirini takip eden sayılar üretebilirsiniz. Baktığınızda biraz da Identity mantığına da benziyor. Sequence cache mekanizması ile belirtilen sayı kadar Cache'de tutmaya yaramaktadır. Squence'in nasıl oluşturabileceğinizi ve nasıl kullanabileceğiniz konusuna gelelim.
Squence Oluşturma
Squence oluşturmak için bir şemaya ait ya da varsayılan olarak dbo şemasına ait olarak isim vermemiz gerekir. Veri tipini de belirttikten sonra diğer özellikleri istediğiniz şekilde girebilirsiniz. En önemli kısım START WITH başlangıç değerini belirleme ve INCREMENT BY artış değerini belirtmeniz gerekiyor. Değerini vermezseniz başlangıç değerini -2147483648 olarak kabul eder. Aynı şekilde INCREMENT BY değeri de 0 olarak tanımlanır.
CREATE SEQUENCE item_counter--Squence adını belirleme
AS INT--Veri tipi belirtme
START WITH 1--Başlangıç değeri
INCREMENT BY 1--Artış değeri
MINVALUE 1--Minumum değer
MAXVALUE 60--Maksimum değeri
NO CACHE--Cache yok
NO CYCLE--Sona ulaşınca başa dönmez hata verir
Bunun yanında MINVALUE minumum değeri, MAXVALUE maksimum alacağı değeri belirtebilirsiniz.
NO CACHE yerine CACHE 30 olarak belirtirseniz 1 den 30’a kadar olan sayıları cache’e alacaktır. 30’a geldiğinde 30’dan 60’a kadar olan sayıları tekrar Cache’e alacaktır. CACHE değeri vermek performans açısından iyi gibi gözüküyor olabilir fakat performans olarak çok bir fark yoktur. Bunun yanında sunucu tarafında beklenmedik bir durumda kapanırsa Cache’de sayıların kaybolmasına yol açabilir. Bu durumu göz önünde bulundurmak faydalı olacaktır.
CYCLE seçeneği, artan bir değerli bir listede maksimum değer, azalan değerli bir listede minimum değer aşıldığında tekrar başlangıca dönülmesini sağlar.
NO CYCLE seçeneği ise bir NEXT VALUE FOR çağrısı yapıldığında bir listenin sonuna ulaşıldığında bir hata döndürecektir. Bir CYCLE değeri belirtilmedi ise varsayılan olarak NO CYCLE olarak tanımlanır.
Squence Çalıştırma
NEXT VALUE FOR ile ilgili squenceyi çalışırabilirsiniz. Gerekli yerlerde bir sonraki değeri alarak istediğiniz işlemi yapabilirsiniz.
SELECT
NEXT VALUE FOR item_counter
Bir tabloya kayıt eklerken de squence çağırıp kullanabilirsiniz.
INSERT INTO [dbo].[Posts] ([Id],[Title],[Content]) VALUES (NEXT VALUE FOR item_counter, 'SQL Server Sequence Kullanımı', 'SQL Server Sequence Kullanımı İçeriği')
Sequence Düzenleme
ALTER komutu ile belli bir değerden sonra başlamasını sağlayabilirsiniz.
ALTER SEQUENCE item_counter RESTART WITH 50
Tüm Squence Listesi
Veri tabanında bulunan tüm squence listesini döndürebilirsiniz. Böylece tüm squencelerin durumunu kolaylıkla görebilirsiniz. Mevcut değerini, minimum, maksimum değerleri gibi bir çok bilgiye ulaşabilirsiniz.
SELECT *
FROM sys.sequences
Squence Silme
DROP SEQUENCE item_counter
Umarım faydalı olmuştur. İyi çalışmalar.
Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.