Yandex Metrica
SQL Server Sequence Kullanımı - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

SQL Server Sequence Kullanımı

14.01.2023 yasinsunmaz 1494 0

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 listesi

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.

Diğer Yazılar

SQL Fonksiyonları: Veritabanlarında Güçlü ve Esnek İşlemler

09.06.2023 yasinsunmaz 354 0

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'e Dair Her Şey OneSQL'de, Ne Ararsanız Bulabileceksiniz

03.06.2023 yasinsunmaz 301 0

Veri tabanı yöneticilerinin yanında zaman zaman yazılımcıların da SQL'i aktif olarak kullanması gerekebiliyor. SQL'i belli başlı şekillder kullanıp işlemlerimizi ...

SQL Server Offset Fetch Kullanımı

06.03.2023 yasinsunmaz 772 0

Merhabalar uzun zamandır yazı yazamadım. Ülke olarak zor zamanlar geçirmekteyiz. Herkese çok geçmiş olsun diyerek kısa bir yazı ile tekrar buradayım. SQL ...

SQL Server OUTPUT Kullanımı Silinen Kaydın Bilgilerini Geriye Döndürme

11.01.2023 yasinsunmaz 400 0

Bu yazımda SQL Server'da OUTPUT ile DELETED komutunun yapısını inceleyeceğiz. Kayıtlar üzerinde yapılan silme işlemlerinde, kaydın bilgilerin...