SAP HANA Eğitimi: Sıra Oluşturma
⚡ Akıllı Özet
Sıralama Oluştur SAP HANA, sayısal değerlerin artan bir listesini otomatik olarak oluşturan bir veritabanı nesnesi tanımlar. Parametreler, oluşturucunun başlangıç değerini, artış miktarını, sınırlarını, döngüsünü ve önbelleğe alma davranışını kontrol eder.

Sıra Nedir?
Sıra, sıra belirtiminde belirtilen kurala göre artan sayısal değerler listesini otomatik olarak üreten bir veritabanı nesnesidir.
Örneğin Tablonun (EMPLOYEE_NO) sütununa çalışan numarasını otomatik olarak eklemek için tabloya yeni bir kayıt eklendiğinde sırayı kullanırız.
Sıra değerleri Artan veya Azalan sırada oluşturulur.
Diziler tablolarla ilişkilendirilmez; uygulama tarafından kullanılırlar. Sırayla iki değer vardır –
- CURRVAL – Dizinin Geçerli değerini sağlar.
- NEXTVAL – Sıranın Sonraki değerini sağlar.
SÖZDİZİMİ
CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]
SÖZ DİZİMİ ÖĞELERİ
| ELEMENTLER | AÇIKLAMA |
|---|---|
| Bu dizinin adıdır. | |
| [ ] | Bir veya daha fazla sıra parametresini belirtir. |
| İLE BAŞLA | Başlangıç sırası değerini açıklar. |
| ARTIRMA ŞEKLİ | Bu, yeni sıra değeri her oluşturulduğunda atanan son değerden artırılacak değeri belirtir. Varsayılan 1'dir. |
| MAKSİMUM DEĞER | Bu, dizinin üretebileceği maksimum değeri belirtir. -4611686018427387903 ile 4611686018427387902 arasında olabilir. |
| MAKS DEĞER YOK | NO MAXVALUE belirtildiğinde, artan bir sıralama için maksimum değer 4611686018427387903, azalan bir sıralama için ise minimum değer -1 olacaktır. |
| MİNDEĞER / MIN DEĞER YOK | Bu, bir dizinin üretebileceği minimum değeri belirtir. -4611686018427387904 ile 4611686018427387902 arasında olabilir. NO MINVALUE kullanıldığında, artan bir dizinin minimum değeri 1'dir. |
| DÖNGÜ | CYCLE yönergesi, sıra numarasının maksimum veya minimum değerine ulaştıktan sonra yeniden başlatılacağını belirtir. |
| DÖNGÜ YOK | Varsayılan seçenek. NO CYCLE yönergesi, sıra numarasının maksimum veya minimum değerine ulaştıktan sonra yeniden başlatılmayacağını belirtir. |
| ÖNBELLEK | Önbellek boyutu, bir düğümde hangi sıra numarası aralığının önbelleğe alınacağını belirtir. İşaretsiz tamsayı olmalıdır. |
| ÖNbellek yok | Varsayılan seçenek. NO CACHE yönergesi, sıra numarasının bir düğümde önbelleğe alınmayacağını belirtir. |
| SIFIRLAMA ŞEKLİ | Veritabanının yeniden başlatılması sırasında veritabanının otomatik olarak çalıştırılacağını belirtir. ve sıra değeri döndürülen değerle yeniden başlatılır. |
Örnek -
DHK_SCHEMA.EMP_NO isimli bir dizi oluşturacağız ve bu dizi kullanıldığında her seferinde dizinin değerini +1 artıracağız.
Sıra Komut Dosyası –
CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1;
Burada, seçme sorgusu her yürütüldüğünde çalışan no'nun değerini +1 artırmak için aşağıdaki örnekte nesne "sırasını" kullanacağız. Sorguda “nextval” seri numarası üretimi veya aynı tür gereksinim için kullanılabilir.
Sıranın Kullanımı –
SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;
ÇIKTI – 100, 101, 102… ve yukarıdaki select sorgusunun her çalıştırılması için bu şekilde devam eder.
Tabloda Sıralama Nasıl Kullanılır?
Yukarıdaki örnek bir sayı döndürüyor ancak bu sayıyı hiçbir yere kaydetmiyor. Üç farklı yöntem, bir diziyi gerçek verilere bağlar ve doğru seçim, uygulamanın ne kadar kontrole ihtiyaç duyduğuna bağlıdır.
1) INSERT işleminde doğrudan NEXTVAL'i çağırın. En açık yaklaşım. Uygulama, bir sayının ne zaman tüketileceğine karar verir.
CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE ( EMPLOYEE_NO INTEGER NOT NULL, EMP_NAME NVARCHAR(100), PRIMARY KEY (EMPLOYEE_NO) ); INSERT INTO DHK_SCHEMA.EMPLOYEE VALUES (DHK_SCHEMA.EMP_NO.NEXTVAL, 'Anita Sharma');
2) Sırayı sütun varsayılanı olarak kullanın. Ekleme işleminde sütun belirtilmese bile numara atanır; bu da sıralama bilgisini bilmek üzere yazılmamış uygulamalar için uygundur.
CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE2 ( EMPLOYEE_NO INTEGER DEFAULT DHK_SCHEMA.EMP_NO.NEXTVAL, EMP_NAME NVARCHAR(100) ); INSERT INTO DHK_SCHEMA.EMPLOYEE2 (EMP_NAME) VALUES ('Ravi Kumar');
3) Az önce verilen değeri okuyun. CURRVAL, bu oturumun aldığı son sayıyı döndürür; bu sayede alt satır, yeni eklenen üst satıra bağlanır.
SELECT DHK_SCHEMA.EMP_NO.CURRVAL FROM DUMMY;
⚠️Uyarı: CURRVAL, geçerli oturumda NEXTVAL en az bir kez çağrılana kadar hata verir. Küresel maksimum değeri değil, bu oturuma verilen değeri bildirir; bu nedenle iki oturum aynı anda farklı geçerli değerlere sahip olabilir.
Sıralı Sütun vs. Kimlik Sütunu
SAP HANA ayrıca, ayrı bir nesneye gerek kalmadan sayı üreten bir birim sütunu da sunmaktadır. İki yöntem de aynı sorunu farklı şekillerde çözmektedir.
| Parametre | Dizi | Kimlik sütunu |
|---|---|---|
| Nesne türü | Bağımsız veritabanı nesnesi | Bir tablonun sütun özelliği |
| Masalar arasında paylaşıldı | Evet, istenilen sayıda tablo bundan yararlanabilir. | Hayır, tek bir sütuna ait. |
| Eklemeden önce görülebilen değer | Evet, NEXTVAL aracılığıyla. | Hayır, ekleme sırasında oluşturuldu. |
| Tanım | SIRA OLUŞTUR | VARSAYILAN OLARAK KİMLİK OLARAK OLUŞTURULMUŞTUR |
| İçin en iyisi | Paylaşımlı numaralandırma, ebeveyn ve çocuk eklemeleri | Bir tabloda basit bir yedek anahtar |
Satır oluşturulmadan önce numaranın bilinmesi gerektiğinde veya birden fazla tablo aynı numaralandırma serisini paylaştığında bir sıra seçin. Daha geniş bir gereksinim olmaksızın basit bir vekil anahtar için birim sütun seçin.
Sıralamaları Yönetme: ALTER, DROP ve Boşluklar
Bir işlem dizisi nadiren ilk oluşturulduğu gibi kalır. Üç bakım görevi tekrar tekrar ortaya çıkar.
Davranışı değiştirmek. ALTER SEQUENCE, mevcut bir dizinin artışını, sınırlarını veya döngüsünü silme işlemi yapmadan ayarlar.ping "it.RESTART WITH" komutu sayacı sıfırlar; bu, test verilerinin yeniden yüklenmesinden sonra genellikle yapılan bir işlemdir.
ALTER SEQUENCE DHK_SCHEMA.EMP_NO RESTART WITH 1000; ALTER SEQUENCE DHK_SCHEMA.EMP_NO INCREMENT BY 10; DROP SEQUENCE DHK_SCHEMA.EMP_NO;
Eksiklikleri anlamak. Sıra numaralarının ardışık olması garanti edilmez ve bu durum, kesintisiz bir denetim izi bekleyenleri şaşırtabilir. Boşluklar üç nedenden dolayı ortaya çıkar:
- Geri alınan işlemler. NEXTVAL işlemsel değildir. Daha sonra geri alınan bir ekleme işlemi tarafından kullanılan bir sayı asla yeniden verilmez.
- Önbelleğe almak. CACHE 100 ile bir düğüm aynı anda yüz değer ayırır. Yeniden başlatma, o blokta kullanılmayan her şeyi atar.
- Eş zamanlı oturumlar. Eş zamanlı olarak veri ekleyen iki oturum, sayılarını birbirine karıştırır, böylece hiçbiri kesintisiz bir çalışma görmez.
Pratik kural, bir diziyi benzersiz tanımlayıcıların kaynağı olarak ele almak, asla kaç satır olduğunu gösteren bir sayaç olarak görmemektir. Fatura numaralandırması gibi kesintisiz bir serinin yasal bir gereklilik olduğu durumlarda, bu seri veritabanı dizisi yerine kendi kontrollerine sahip uygulama mantığı tarafından oluşturulmalıdır.
Var olanı bulmak. Sistem görünümü olan DİZİLER, her diziyi mevcut değeriyle birlikte listeler; bu, bir şemayı denetlemenin en hızlı yoludur. İlgili sözdizimi şu bölümde ele alınmıştır: SAP HANA SQL'i ve sütun tanımlarında SAP HANA veri tipleri.
