Oracle da Auto Increment Id Alanı Oluşturmak
03 Temmuz 2009 Yazan mseker
Kategori Genel, Veritabanı
Bu yazı 413 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
tamer demişki 03 Temmuz 10 01:56
anlatımınız çok sade ve güzel olmuş, bir ara bunu toadda nasıl yapacağımızı gösterirseniz çok memlun olurum…teşekkürler..
mseker demişki 13 Temmuz 10 18:47
@tamer, bunu Toadda veya baska bir yerde verdiğim örnek kodlarla yapabilirsin. Toadda Ayrıca birrşey yapmana gerek yok. Zaten ben de Toad kullanıyorum.