Sequence Olusturmak (ORACLE)
Veritabanlarina veri yazarken en cok karsilasacagimiz durumlardan birisi , anahtar alan olarak gosterdigimiz fieldlerde cakismayacak sekilde ,sirali olarak degerler atmamiz lazimdir .. Bunu bir applicationda yapabilmemiz icin cok fazla kafa yormamiz lazim , yada mesela turkiyede tc kimlik numarasi gibi tekligi kanitlanmis bir bilgi olacakki ancak rahat rahat kullanabilelim..
Veritabanlari boyle durumlar icin belirli cozumler sunmaktadir. Ms sql server’in Identity ve Oracle’nin
sequence sutunlari bu isi gormemizi saglar.
Assagida sequence nasil olusturur ne ise yarar ve nasil kullanilir bu konulara deyinecegim arkadaslar …
ilk olarak yeni bir sequence olusturalim.
Bunun icin create sequence sozcugunu kullanacagiz ..
Simdi sira uretmek icin nextval sozcugunu kullaniyoruz . Her nextval dedigimizde yeni sira uretecektir bize , hangi sirada oldugumuzu ogrenmek icin ise currval sozcugunu kullanacagiz ..
Sequence olustururken belli basli propertylerini biz verebiliyoruz. Mesela hangi sayidan baslamali hangi sayiya kadar rakam uretmeli veya sayilar hangi aralikta artmali . Verdigimiz ust limit bittiginde sayi basa donmelimi bu gibi seyleri kontrol altina alabiliriz ..
Start with 50 : Sayinin baslangiz degeri olarak 50 almasini saglar
increment by 3 : Sayinin 3 er araliklarla artmasini saglar
maxvalue 3000 veya minvalue 200 : Sayinin ust sirini 3000 olmasi ve alt sinirinin 200 olmasini saglar
Cache veya nochace : chache dersek onbellekte yer tutmasini saglariz nochace dersek eger onbellekte yer tumaz her defasinda veritabanini guncelleyerek deger alir.
Cycle veya nocycle : Cycle dedigimizde sayi ust sinira ulastiginda basa donmez nocycle dedigimizde ise sayi tekrar basa doner ki bu fazla kullanilmasi onerilmez sorunlar yasayabiliriz .
Yukaridaki dediklerimizi bir ornekle kullanimini gorelim.
Bir tabloda ornek yapalim daha iyi anlasilmasi icin ..
Kullanacagimiz user oracle XE surumunun icindeki hr user’nin employees tablosunudan veri cekelim ve kendi tablomuza yazdirirken sequensi otomatik attiralim..
Kullanacagimiz sequence biraz once olusturdugumuz turkish_seq olsun ve birtanede tablo olusturalim 2 tane field’i olsun number tipinde (seq_id ve maas).
Tablomuz
create table turkishh(seq_id number primary key , maas number )
Turkish tablomuza verileri ekleyelim eklerken employees tablomuzun salary fieldini maas tablosuna atacaz .
Bakalim nasil atmis tablomuza verileri…
Umarim yararli olmustur 😉
Iyi calismlar