Alfabetik Sıralama :ABCDEFGHIJKLMNOPQRSTUVWXYZ -


Oracle Database üzerinde ID olarak kullanmak istediğiniz bir alana diğer db sistemleri gibi (Access,MySQL,SQLServer vs..) gibi Auto Increment bir özellik veremiyorsunuz.Bu iş biraz daha komplex olarak gerçekleşiyor.Bir table ın auto increment alana sahip olması için öncelikle SEQUENCE lerden faydalanıyoruz.SEQUENCE ler kendi içlerinde increment işlemi gerçekleştiriyorlar.

SEQUENCE oluşturcağınız zaman Değerleri olarak ihtiyacınız olan parametreleri girebilirsiniz ki default gelen ayarlar auto increment için çok uygundur.

Belirtmemiz gereken değerler

Minimum : Bu SQUENCE in tutacağı minimum değerdir.Default değer 1 dir
Maximum : Bu ise alabileceği maksimum değeri ifade eder. Default değer 1.0E28 Yaklaşık 9.999.999.999.999.999.999.999.999.999 (yani baya baya büyük) gibi bişi yapıyor :)


Interval: Default değeri bir olup SQUENCE in kendi içinde count değeridir.Bu değere göre bir bir artacaktır.



SEQUENCE mizi kaydediyoruz.

Bu işlemden sonra Auto Increment alan için tablomuza ait bir trigger (tetikleyici) oluşturmamız gerek.Bu triggerın görevi her bir insert işleminde yazdığımız SEQUENCE i tetiklemek ve onun count değerini ID alanına atamak.

BEGIN
  select
     "ORNEK_SCHEMA"."SEQ_ORNEK".nextval
  into
     :new.ID
  from
     dual
  ;
END;

Bu trigger´a bir "Event" (Olay) atamamız gerekecek onuda TRIGGER oluşturduğumuz pencerede Event tabından gerçekleştiriyoruz.İstediğimiz işlem tabloya girecek her kayıt için ID artırmak olduğu için Insert Event´ına TRIGGERımızı atıyoruz.

Advanced tabından Trıgger´ın Herbir Row (Satır için) gerçekleşeceğini belirttikten sonra Triggerımızı kaydediyoruz.

Deneme olarak tablonuza bir kayıt atarsanız ID nin otomatik olarak SEQUNCE´ın tuttuğu son değeri aldığını göreceksiniz.

Tek bir SEQUENCE ile birden fazla tabloya ID ataması yapabilirsiniz ancak SEQUENCE kendi iç sayısını tutar.Yani Tablodaki son ID değeri+1 gibi bir işlem gerçekleştirmez bu nedenle farklı tabloarda birbirini tekrar eden ID değerleri göremezsiniz.Her bir tablo için farklı SEQUENCE lar oluşturabilirsiniz.



Konu: Oracle DB Auto Increment Field
 
Okunma Sayısı : 64
Eklenme Tarihi : 31 Ocak 2007, Çarşamba
SONRAKI BILGI : SEKSİ GÜZELLERDEN BAŞTAN ÇIKARTAN POZLAR..   
Forum Linki:
Aranan Kelime:
   

 

 

Copyright © 2008 Temha.neT