ORACLE SEQUENCE(OTOMATIK SAYI)

Oracle da access yada Ms sql dekine benzer otomatik arttırma diye birşey yoktur.Bunu yapmak için siz kendiniz sequences yaratmalısınız.

CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;

Örneğin:

CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;

Burada MINVALUE en küçük MAXVALUE en büyük değer koşuludur.MAXVALUE zorunlu değildir.Atanmazsa varsayılan olarak 999999999999999999999999999 değerini alır.START WITH başlangıç değerini INCREMENT BY her seferinde ne kadarlık bir değer artışı olacağını gösterir.CACHE ise sequnece işleminin performans açısından daha hızlı olması için bellekte tutulacak değerdir.NOCACHE bellekte tutulmayacağı demektir.Sequencesin bir sonraki değerine ulaşmak için sequence_name.nextval ile erişilebilir.

INSERT INTO musteriler
(musteri_id, musteri_name)
VALUES
(supplier_seq.nextval, ‘Ali Çetinkaya’);

Normalde değerler Increment By da belirtilen kadar artar mesela diyelim ki bu değer 1 olsun ve son kullanılan değer 100 olsun. Biz bir sonraki insert işleminde 255 atamak istiyorsan Alter ifadesi ile sequence i değiştirmemiz gerekir.

alter sequence seq_name
increment by 124;

select seq_name.nextval from dual;

alter sequence seq_name
increment by 1;

Böylece bir sonraki değer 255 olacak ve sonra yine 1 artacaktır.
Share:
spacer

Hiç yorum yok:

Yorum Gönder