Provided by: manpages-tr_1.0.5.1-2_all 

İSİM
CREATE SEQUENCE - yeni bir kayıt listesi üreteci tanımlar
KULLANIM
CREATE [ TEMPORARY | TEMP ] SEQUENCE isim [ INCREMENT [ BY ] artış ]
[ MINVALUE asgarideğer | NO MINVALUE ]
[ MAXVALUE azami_değer | NO MAXVALUE ]
[ START [ WITH ] başlangıç ]
[ CACHE kayıt_sayısı ] [ [ NO ] CYCLE ]
AÇIKLAMA
CREATE SEQUENCE yeni bir kayıt listesi üreteci oluşturur. Bunu isim isimli yeni bir özel tek satırlık
tabloyu oluşturarak ve ilklendirirerek yapar. Komutu kullanan üretecin sahibi olur.
Bir şema ismi verilmişse, kayıt listesi belirtilen şemada oluşturulur. Aksi takdirde, o anki şemada
oluşturulur. Geçici kayıt listeleri özel bir şema içinde mevcuttur, dolayısıyla bir geçici kayıt listesi
oluştururken bir şema ismi belirtilmemelidir. Satır listesinin ismi aynı şemadaki başka bir kayıt
listesi, tablo, indeks ya da sanal tablo ile çakışmayacak şekilde seçilmelidir.
Bir kayıt listesi oluşturulduktan sonra, üzerinde nextval, currval ve setval işlevleri ile işlem
yapabilirsiniz. Bu işlevlerin açıklamalarını
http://belgeler.org/uygulamalar/pgsql/pgsql-functions-sequence.html adresinde bulabilirsiniz.
Bir kayıt listesini doğrudan göncelleyemezsiniz, bir kayıt listesinin o anki durumunu ve parametrelerini
incelemek için şöyle bir sorgu kullanabilirsiniz:
SELECT * FROM isim;
Kısmen, kayıt listesinin last_value alanı herhangi bir oturum tarafından ayrılmış son değeri gösterir.
(Şüphesiz, başka oturumlar o an nextval çağrıları yapıyorsa, aldığınız değer atıl olmuş olabilir.)
PARAMETRELER
TEMPORARY veya TEMP
Belirtilmişse, kayıt listesi nesnesi sadece bu oturum için oluşturulur ve oturum sonunda silinir.
Aynı isimdeki kalıcı kayıt listelerinin varlığı durumunda, bunlara şema nitelemeli isimlerle
erişilmedikçe, geçici şemanın varlığı durumunda görünür olmazlar.
isim Oluşturulacak kayıt listesinin ismi (şema nitelemeli olabilir).
artış İsteğe bağlı INCREMENT BY artış deyimi, yeni değeri oluşturmak üzere o anki sıra değerine
eklenecek değeri belirtmek için kullanılır. Bir pozitif değer bir artan değerli liste, negatif bir
değer ise azalan değerli bir liste oluşturacaktır. Öntanımlı değer 1'dir.
asgarideğer, NO MINVALUE
İsteğe bağlı MINVALUE asgarideğer deyimi üretilen bir kayıt listesinin asgari sıra değerini
belirlemekte kullanılır. Belirtilmezse ya da NO MINVALUE belirtilirse, öntanımlı sıra değeri
kullanılır. Öntanımlı değer artan değerli bir liste için 1, azalan değerli bir liste için 2-1'dir.
azami_değer, NO MAXVALUE
İsteğe bağlı MAXVALUE azami_değer deyimi üretilen bir kayıt listesinin azami sıra değerini
belirlemekte kullanılır. Belirtilmezse ya da NO MAXVALUE belirtilirse, öntanımlı sıra değeri
kullanılır. Öntanımlı değer artan değerli bir liste için 2-1, azalan değerli bir liste için
-1'dir.
başlangıç
İsteğe bağlı START WITH başlangıç deyimi kayıt listesinin başlangıcını belirtmek için kullanılır.
Öntanımlı başlangıç değeri, artan değerli bir liste için asgarideğer, azalan değerli bir liste
için azami_değer'dir.
satır_sayısı
İsteğe bağlı CACHE satır_sayısı deyimi daha hızlı erişim için sıralı listeyi saklamak üzere
bellekte yer ayrılmasını ve ilklendirilmesini sağlar. En az değer 1'dir ve bu ayrıca öntanımlıdır.
CYCLE, NO CYCLE
CYCLE seçeneği, artan bir değerli bir listede azami_değer, azalan değerli bir listede asgarideğer
aşıldığında tekrar başlangıca dönülmesini sağlar.
NO CYCLE belirtilmişse, bir nextval çağrısı bir listenin sonunda yapıldığında bir hata
döndürecektir. Ne CYCLE ne de NO CYCLE belirtilmişse, NO CYCLE öntanımlıdır.
EK BİLGİ
Bir kayıt listesini silmek için DROP SEQUENCE kullanın.
Satır listeleri bigint aritmetiğine tabidirler, dolayısıyla listedeki satır sayısı sekiz baytlık tamsayı
genişliğini (-9223372036854775808 .. 9223372036854775807) aşamaz. Bazı eski platformlarda sekiz baytlık
tamsayılara derleyici desteği olmadığından mecburen integer aritmetiği (-2147483648 .. +2147483647
aralığı) kullanılır.
Çok sayıda oturum tarafından ortaklaşa kullanılacak bir kayıt listesi için kayıt_sayısı 1'den büyük
seçilirse, umulmadık sonuçlar ortaya çıkabilir. Herhangi bir oturum bu sıralama değişkenine eriştiği her
bir defa için bir dizi değere yer ayırıp, orada saklar ve sıralama nesnesine ait last_value değerini bir
artırır. Bundan sonraki kayıt_sayısı-1 defalık erişimde mevcut kayıt listesine dokunmadan değerler için
önceden ayrılmış yerler kullanılır. Ayrılmış ama kullanılmamış yerler var ise bunlar boşa gider ve oturum
bittiğinde kayıt listesinde boşluklar kalmış olur.
Bunun yanında farklı oturumlar için farklı sıralama değerleri belirlenmesi garanti edilmiş olmasına
rağmen bütün oturumlar dikkate alındığında bunlar bir sıra takip etmeyebilir. Örneğin, kayıt_sayısı için
10 belirtilmiş olsun, A oturumu 1 den 10 a kadar sıra değeri ayırmış ve nextval=1 döndürmüş olsun. Daha
sonra B oturumu da 11 den 20 ye kadar sıra değeri ayırmış olsun ve A oturumunun değer döndürmesini
beklemeden nextval=11 döndürmüş olsun. Burada, kayıt_sayısı=1 değeri için döndürülen nextval değerleri
bir sıra takip ederken 1'den büyük kayıt_sayısı değerleri için bu garanti edilemez, sadece üretilen
değerlerin birbirinden farklı değerler olacakları garanti edilebilir. Ayrıca last_value değeri de henüz
nextval tarafından döndürülmüş olmasa da herhangi bir oturum tarafından ayrılmış son değeri içerir.
Diğer bir önemli husus, ayrılarak belleğe alınmış değerler kullanılana kadar üzerinde setval uygulanan
bir oturumun diğer oturumlar tarafından uyarılmayacağıdır.
ÖRNEKLER
101'den başlayacak ve artan sıralı olacak serial isimli kayıt listesininin oluşturulması:
CREATE SEQUENCE serial START 101;
Bir kayıt listesinden sonraki kaydın seçilmesi:
SELECT nextval('serial');
nextval
---------
114
Bu kayıt listesinin bir INSERT cümlesinde kullanılması:
INSERT INTO distributors VALUES (nextval('serial'), 'nothing');
Kayıt listesi değerinin bir COPY FROM sonrasında güncellenmesi:
BEGIN;
COPY distributors FROM 'input_file';
SELECT setval('serial', max(id)) FROM distributors;
END;
UYUMLULUK
CREATE SEQUENCE, SQL:2003'de belirtilmiştir. PostgreSQL aşağıdaki durumlar dışında standartla uyumludur:
· Standardın AS <veri türü> ifadesi desteklenmemektedir.
· Sonraki değerin sağlanması, standardın NEXT VALUE FOR ifadesi yerine nextval() işlevi kullanılarak
yapılır.
ÇEVİREN
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Mart 2005
PostgreSQL CREATE SEQUENCE(7)