Oracle da Auto Increment Id Alanı Oluşturmak
03 Temmuz 2009 Yazan mseker
Kategori Genel, Veritabanı
Bu yazı 238 kez okundu
Merhabalar,
Bugün sizlere Oracle veritabanında auto increment id alanını nasıl oluşturacağımızı anlatmaya çalışacağım. Ben daha önce hep MS Sql Server kullandım. Veritabanı kullanan bir yazılım için id alanı vazgeçilmezlerin en başında gelir. Elbette bu id alanı da tekil olmak zorundadır. Bunun için en basit yol id alanının auto increment (otomatki artan) bir alan olmasıdır. MS Sql Server da bu alanı oluşturmak oldukça basittir. Sihirbaz ile tablo oluşturuyorsanız kolon eklerken bu alan auto increment dersiniz olur biter ya da aşağıdaki gibi bir script ile bu halledilebilir.
create table myTable(
id int not null auto_increment primary key
);
Ancak bu Oracle da o kadar da basit olmuyor. Neden bir kolaylığı sağlamadıklarını anlamadım ama id alanı için auto increment tanımlamasının olmaması oldukça şaşırtıcı geldi bana. Oracle için auto increment bir alan tanımlamak için 3 adımı da gerçekleştiriyoruz.
Adım 1: Öncelikle tablomuzu yaratalım. musteri isimli bu tablomuzda id (number, not null), ad (varchar2) ve soyad(varchar2) alanları olsun. Bu tabloyu oluşturmak için aşağıdaki scripti kullanabliriz.
create table musteri(
id number not null,
ad varchar2(30),
soyad varchar2(30)
);
Adım 2: Şimdi de bir sequence yaratarak bu id alanımızın kaçtan başlayacağını ve kaçar kaçar artatacağını belirtelim. Ben aşağıdaki script ile musteri_id_seq isminde bir sequence oluşturarak id alanımın 1 den başlamasını ve 1 er 1 er artmasını sağladım. İsterseniz siz farklı değerler de verebilirsiniz.
create sequence musteri_id_seq start with 1 increment by 1;
 Adım 3: Sıra ÅŸimdi asıl iÅŸi yapacak, sequence de beklirttiÄŸimiz deÄŸerler doÄŸrultusunda her insert cümleciÄŸi sonrasında çalışacak olan trigger i oluÅŸturmamıza geldi. Bunun için de aÅŸağıdaki scripti kullanabiliriz.Â
create or replace trigger musteri_insert
before insert on musteri
for each row
begin
select musteri_id_seq.nextval into :new.id from dual;
end;
İşte bu 3 adımı gerçekleştirdiğimizde auto increment bir alanımız olmuş olacak.
Bir kayıt girerek gerçekten doğru çalışıp çalışmadığını test edelim. 2 Kayıt eklemek için aşağıdaki scripti kullanalım.
insert into musteri (ad, soyad) values (‘Murat’, ‘ÅžEKER’);
1 row created.
insert into musteri (ad, soyad) values (‘Cem’, ‘CANBAY’);
1 row created.
Kayıtları ekledikten sonra veritabanımızda kayıtlar aşağıdaki gibi görünecektir.
Bir makalemizin de sonuna geldik. Hepinize iyi çalışmalar diliyorum.
Murat ÅžEKER
      ——————————-
      | ID   | AD     |  SOYAD    |
       —– ———  ————–
      | 1    | Murat | ŞEKER       |
      | 2    | Cem    | CANBAY  |
      ——————————-






HÜSEYİN KAMAR demi?ki 05 Ocak 10 16:24
çok anlaşılır bir paylaşım olmuş çok teşekkür