Bu Kategoriye İçerik Girin veya Soru Sorun

Kategori İçi Sözlük

Bu Sayfayı Paylaş:

Sequence

Tanım: Oracle'da birden fazla kullanıcının, unik, sıralı integer değerleri üretebilmesi için kullanılan schema nesnesi. Tablolarda otomatik artan sütunlar, değerlerini sequence'den alacak şekilde ayarlanabilir.

CURRVAL

Tanım: Oracle'da bir sequence'in son değerini vermek için kullanılan pseudocolumn

NEXTVAL

Tanım: Oracle'da bir sequence'in son değerini veren ve ardından INCREMENT BY özelliğinde belirtilen değer kadar arttıran pseudocolumn

Sequence Yaratma

Sequence create seqeunce komutu ile yaratılır : CREATE SEQUENCE mysequence INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE CACHE 10; mysequence, ilk değer 1 olacaktır, her adımda değer 1 artırılır ve NOMAXVALUE ifadesinden dolayı istenildiği kadar artırılabilir. NOMAXVALUE yerine MAXVALUE 1000 gibi bir ifade verilirse 1000 değerinden sonra artırma olmaz. NOCYCLE max değeri aşıldığında tekrar min değerinden başlanmayacağını belirtir. CACHE bir sonraki 10 değeri hafıza saklaması için kullanılır. Bu şekilde yeni değerler daha hızlı üretilir. mysequence.CURRVAL ile son değer alınabilir, mysequence.NEXTVAL ise son değeri döndürür ve sayıyı INCREMENT BY özelliğinde belirtilen değer kadar artırır. Örneğin bir tabloya insert işleminde id değer sequence'e göre aşağıdaki gibi artırılması sağlanabilir : INSERT INTO tablo_adi(id, name) VALUES (mysequence.NEXTVAL, 'test adi');

Otomatik Artan Sütun Ekleme

Oracle'da id değeri otomatik olarak her kayıt eklendiğinde artan bir sütun yapılabilir. Bunun için sequence yaratılmalı ve her satır eklendiğinde tablonun id değerini bu sequence'e göre set eden bir trigger yaratılmalıdır

Önce sequence yaratılır :

CREATE SEQUENCE mysequence INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE CACHE 10;

Bir tablo için aşağıdaki (tablonun sütun adı C_ID olsun) gibi bir trigger yaratılması gerekiyor :

CREATE OR REPLACE TRIGGER my_trigger BEFORE INSERT ON mytable FOR EACH ROW BEGIN :new.C_ID := mysequence.nextval; END;

Eğer eski versiyon bir Oracle ise :new.C_ID := mysequence.nextval; bölüm SELECT mysequence.nextval INTO :new.C_ID FROM dual; şeklinde yapılmalıdır.

Bu işlemden sonra tabloya her insert'te id otomatik olarak artacaktır



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir