Provided by:
manpages-tr_1.0.5.1-2_all 
ISIM
CREATE SEQUENCE - yeni bir kayit listesi ureteci tanimlar
KULLANIM
CREATE [ TEMPORARY | TEMP ] SEQUENCE isim [ INCREMENT [ BY ] arti,s ]
[ MINVALUE asgarideger | NO MINVALUE ]
[ MAXVALUE azami_deger | NO MAXVALUE ]
[ START [ WITH ] ba,slangi,c ]
[ CACHE kayit_sayisi ] [ [ NO ] CYCLE ]
A,CIKLAMA
CREATE SEQUENCE yeni bir kayit listesi ureteci olusturur. Bunu isim
isimli yeni bir ozel tek satirlik tabloyu olusturarak ve
ilklendirirerek yapar. Komutu kullanan uretecin sahibi olur.
Bir sema ismi verilmisse, kayit listesi belirtilen semada olusturulur.
Aksi takdirde, o anki semada olusturulur. Gecici kayit listeleri ozel
bir sema icinde mevcuttur, dolayisiyla bir gecici kayit listesi
olustururken bir sema ismi belirtilmemelidir. Satir listesinin ismi
ayni semadaki baska bir kayit listesi, tablo, indeks ya da sanal tablo
ile cakismayacak sekilde secilmelidir.
Bir kayit listesi olusturulduktan sonra, uzerinde nextval, currval ve
setval islevleri ile islem yapabilirsiniz. Bu islevlerin aciklamalarini
http://belgeler.org/uygulamalar/pgsql/pgsql-functions-sequence.html
adresinde bulabilirsiniz.
Bir kayit listesini dogrudan goncelleyemezsiniz, bir kayit listesinin o
anki durumunu ve parametrelerini incelemek icin soyle bir sorgu
kullanabilirsiniz:
SELECT * FROM isim;
Kismen, kayit listesinin last_value alani herhangi bir oturum
tarafindan ayrilmis son degeri gosterir. (Suphesiz, baska oturumlar o
an nextval cagrilari yapiyorsa, aldiginiz deger atil olmus olabilir.)
PARAMETRELER
TEMPORARY veya TEMP
Belirtilmisse, kayit listesi nesnesi sadece bu oturum icin
olusturulur ve oturum sonunda silinir. Ayni isimdeki kalici
kayit listelerinin varligi durumunda, bunlara sema nitelemeli
isimlerle erisilmedikce, gecici semanin varligi durumunda
gorunur olmazlar.
isim Olusturulacak kayit listesinin ismi (sema nitelemeli olabilir).
arti,s Istege bagli INCREMENT BY arti,s deyimi, yeni degeri olusturmak
uzere o anki sira degerine eklenecek degeri belirtmek icin
kullanilir. Bir pozitif deger bir artan degerli liste, negatif
bir deger ise azalan degerli bir liste olusturacaktir. Ontanimli
deger 1'dir.
asgarideger, NO MINVALUE
Istege bagli MINVALUE asgarideger deyimi uretilen bir kayit
listesinin asgari sira degerini belirlemekte kullanilir.
Belirtilmezse ya da NO MINVALUE belirtilirse, ontanimli sira
degeri kullanilir. Ontanimli deger artan degerli bir liste icin
1, azalan degerli bir liste icin 2-1'dir.
azami_deger, NO MAXVALUE
Istege bagli MAXVALUE azami_deger deyimi uretilen bir kayit
listesinin azami sira degerini belirlemekte kullanilir.
Belirtilmezse ya da NO MAXVALUE belirtilirse, ontanimli sira
degeri kullanilir. Ontanimli deger artan degerli bir liste icin
2-1, azalan degerli bir liste icin -1'dir.
ba,slangi,c
Istege bagli START WITH ba,slangi,c deyimi kayit listesinin
baslangicini belirtmek icin kullanilir. Ontanimli baslangic
degeri, artan degerli bir liste icin asgarideger, azalan degerli
bir liste icin azami_deger'dir.
satir_sayisi
Istege bagli CACHE satir_sayisi deyimi daha hizli erisim icin
sirali listeyi saklamak uzere bellekte yer ayrilmasini ve
ilklendirilmesini saglar. En az deger 1'dir ve bu ayrica
ontanimlidir.
CYCLE, NO CYCLE
CYCLE secenegi, artan bir degerli bir listede azami_deger,
azalan degerli bir listede asgarideger asildiginda tekrar
baslangica donulmesini saglar.
NO CYCLE belirtilmisse, bir nextval cagrisi bir listenin sonunda
yapildiginda bir hata dondurecektir. Ne CYCLE ne de NO CYCLE
belirtilmisse, NO CYCLE ontanimlidir.
EK BILGI
Bir kayit listesini silmek icin DROP SEQUENCE kullanin.
Satir listeleri bigint aritmetigine tabidirler, dolayisiyla listedeki
satir sayisi sekiz baytlik tamsayi genisligini (-9223372036854775808 ..
9223372036854775807) asamaz. Bazi eski platformlarda sekiz baytlik
tamsayilara derleyici destegi olmadigindan mecburen integer aritmetigi
(-2147483648 .. +2147483647 araligi) kullanilir.
Cok sayida oturum tarafindan ortaklasa kullanilacak bir kayit listesi
icin kayit_sayisi 1'den buyuk secilirse, umulmadik sonuclar ortaya
cikabilir. Herhangi bir oturum bu siralama degiskenine eristigi her bir
defa icin bir dizi degere yer ayirip, orada saklar ve siralama
nesnesine ait last_value degerini bir artirir. Bundan sonraki
kayit_sayisi-1 defalik erisimde mevcut kayit listesine dokunmadan
degerler icin onceden ayrilmis yerler kullanilir. Ayrilmis ama
kullanilmamis yerler var ise bunlar bosa gider ve oturum bittiginde
kayit listesinde bosluklar kalmis olur.
Bunun yaninda farkli oturumlar icin farkli siralama degerleri
belirlenmesi garanti edilmis olmasina ragmen butun oturumlar dikkate
alindiginda bunlar bir sira takip etmeyebilir. Ornegin, kayit_sayisi
icin 10 belirtilmis olsun, A oturumu 1 den 10 a kadar sira degeri
ayirmis ve nextval=1 dondurmus olsun. Daha sonra B oturumu da 11 den 20
ye kadar sira degeri ayirmis olsun ve A oturumunun deger dondurmesini
beklemeden nextval=11 dondurmus olsun. Burada, kayit_sayisi=1 degeri
icin dondurulen nextval degerleri bir sira takip ederken 1'den buyuk
kayit_sayisi degerleri icin bu garanti edilemez, sadece uretilen
degerlerin birbirinden farkli degerler olacaklari garanti edilebilir.
Ayrica last_value degeri de henuz nextval tarafindan dondurulmus olmasa
da herhangi bir oturum tarafindan ayrilmis son degeri icerir.
Diger bir onemli husus, ayrilarak bellege alinmis degerler kullanilana
kadar uzerinde setval uygulanan bir oturumun diger oturumlar tarafindan
uyarilmayacagidir.
"ORNEKLER
101'den baslayacak ve artan sirali olacak serial isimli kayit
listesininin olusturulmasi:
CREATE SEQUENCE serial START 101;
Bir kayit listesinden sonraki kaydin secilmesi:
SELECT nextval('serial');
nextval
---------
114
Bu kayit listesinin bir INSERT cumlesinde kullanilmasi:
INSERT INTO distributors VALUES (nextval('serial'), 'nothing');
Kayit listesi degerinin bir COPY FROM sonrasinda guncellenmesi:
BEGIN;
COPY distributors FROM 'input_file';
SELECT setval('serial', max(id)) FROM distributors;
END;
UYUMLULUK
CREATE SEQUENCE, SQL:2003'de belirtilmistir. PostgreSQL asagidaki
durumlar disinda standartla uyumludur:
. Standardin AS <veri turu> ifadesi desteklenmemektedir.
. Sonraki degerin saglanmasi, standardin NEXT VALUE FOR ifadesi
yerine nextval() islevi kullanilarak yapilir.
,CEVIREN
Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Mart 2005