|
Mssql server kullanalar için kolaylıkla yapılabilen bir işlemdir aotu increment. Fakat Oracle'da o kadar kolay değildir bu işlem, birkaç adımda yapılır. Lafı çok uzatmadan kısaca özetleyecek olursak
1- Önce bir sequence oluşturulur
Sequence bizim için ardışık değerler tutan bir yapıdır.
create sequence SQ_TABLOMUZUN_ISMI start with 1 increment by 1 nomaxvalue;
Burayı özetleyecek olursak
isim standardı oluşturmak adına SQ_ takısı ve ardından hangi tablo için kullanacaksak o tablonun ismi yazılabilir.
start with, artıma başlanacak sayı
increment by, herbir artımın miktarı
nomaxvalue, sonsuza kadar devam et, azami değer yok
2- Tetikleyici(trigger) oluşturmalıyız
CREATE OR REPLACE TRIGGER TRG_TABLOMUZUN_ISMI before insert on TABLOMUZUN_ISMI for each row begin select SQ_TABLOMUZUN_ISMI.nextval into :new.id from dual; end;
bu tetikleyici tabloya her ekleme işleminden önce eklenecek olan kaydın ID (new.id) değerine sequence'den aldığı son değeri atar.
Bu kadar. Artık tabloya kayıt ekleme işlemlerinde ID alanında değer atamamıza gerek kalmadı. Bu işlemi otomatik olarak trigger yapacak.
Kullanımı : INSERT INTO TABLOMUZUN_ISMI VALUES('AUTO INCREMENT İÇİN TRİGGER')
Diğer bir kullanım şeklide trigger eklemeden yapılan kullanımdır. Bunun için trigger eklemezsiniz, sadece sequence eklemek yaterlidir fakat her bir kayıt için id değerini sizin vermeniz gerekir. Şöyleki,
INSERT INTO TABLOMUZUN_ISMI VALUES( SQ_TABLOMUZUN_ISMI.nextval, 'AUTO INCREMENT İÇİN SEQUENCE')
İlk kullanım daha rahat ama ihtiyaca göre diğer yöntem de kullanılabilir.
|