Provided by:
manpages-tr_1.0.5.1-1.1_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