|
SQL AUTO INCREMENT (Otomatik Artan Numara)
Tablomuza her kayıt eklendiğinde bir alanda bulunan değerin benzersiz
olmasını ve otomatik olarak artmasını isteyebiliriz. Daha çok kayıtlarımız için
bir id numarası alanı kullanıyorsak, auto increment kullanılır. Sadece sayısal
alalarda kullanılır.
Otomatik numara artışı olan bir alana yazdığımız program üzerinden değer
göndermeyiz. Gönderdiğimiz takdirde hata alırız. Kayıt ekleme örneği:
INSERT INTO Personel (adi,soyadi) VALUES ('Salih','ESKİOĞLU')
Burada görüldüğü gibi id alanı hiç kullanılmadı. Veritabanımıza kayıt eklenirken
id alanına numara otomatik olarak verilecektir.
Yani INSERT INTO Personel (id,adi,soyadi) VALUES (5,'Salih','ESKİOĞLU') şeklinde
yazarsak hata alırız.
Tablomuzu oluştururken ilgili alana kriter olarak tanımlanır. Farklı
veritabanlarında kullanım biçimi değişiktir.
MySQL kullanım biçimine örnek:
CREATE TABLE Personel
(
id int NOT NULL AUTO_INCREMENT,
adi varchar(10),
soyadi varchar(10),
PRIMERY KEY (id)
) |
AUTO_INCREMENT ifadesi ile id alanına 1 'den başlayarak her seferde bir sayı
aotomatik artan numara eklenmesi sağlanabilir. Eğer ilk başlangıç değerinin 100
olmasını istiyorsak ilgili satırı söyle yazmamız gerekir:
id int NOT NULL AUTO_INCREMENT=100
SQL Server kullanım biçimine örnek:
CREATE TABLE Personel
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(10),
soyadi varchar(10)
) |
SQL Server tarafında IDENTITY kelimesi kullanılır. Parantezin içindeki
birinci rakam başlama değerini, ikinci rakam ise artış miktarını belirler. Bu
örnekte ilk numara 1 'den başlayacaktır ve her kayıt eklendiğinde id alanı bir
numara artacaktır. Eğer ilk kayıt numarasını 50'den başlamasını ve 5 farkla
eklenmesini istersek IDENTITY(50,5) yazmamız yeterli olacaktır.
MS Access kullanım biçimine örnek:
CREATE TABLE Personel
(
id integer PRIMARY KEY AUTOINCREMENT,
adi Text,
soyadi Text
) |
Access veritabanlarında AUTOINCEMENT kelimesi kullanılır. Varsayılan olarak 1
'den başlar ve her kayıt için 1 numara artarak gider. AUTOINCREMENT(500,5) ile
ilk kayıt numarası 500 olur ve eklenen her kayıt için üzerinde 5 eklenerek
gider.
ORACLE kullanım biçimine örnek:
CREATE Sequence otomatik_artis
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
) |
Görüldüğü üzere Oracle veritbanlarında durum biraz farklı. Önce tablomuzu
oluşturuyor. Tablomuzu oluşturduktan sonra Create Squence ile otomatik artış
tanımı yapıyoruz. Burada yazılan otomatik_artis ifadesi tablomuzda yeni bir alan
oluşturmaz. Bu bir tanımdır. Oluşturduğumuz bu tanımı tablomuzda birden
fazla alanda kullanabiliriz.
Burada;
MINVALUE 1 ile alanın alabileceği en düşük değer belirtilir.
STARVALUE WITH 1 ile kaydın başlaam değer belirtilir.
INCREMENT BY 1 ile artış değeri belirtilmiştir.
CACHE 10 ile veritabanı performansını arttırmak için sonraki verilecek 10
numarayı hafızaya alır ve yeni kayıt eklenirken veritabanına bakıp sonr numarayı
arttırmak yerine hafızadan sıradaki numarayı otomatik olarak verir. Özellikle
artış değeri 1 olmayann durumlarda performansı arttırır.
Kayıt giriş örneği:
INSERT INTO Personel (ID,Adi,calistigi_ay_sayisi)
VALUES(otomatik_artis.nextval,'Salih',otomatik_artis.nextval)
bu örnekte görüleceği üzere diğer veritabanlarından farklı olarak ID alanıda
yazılmıştır. Otomatik_artis.nextval ile id alanına otomatik sayı artışı
uygulanmıştır. Ayrıca calistigi_ay_sayisi alanına da aynı tanım uygulanmıştır.
Neticede dönemsel çalışan bir personelimiz varsa en son kayda bakarak toplam kaç
ay çalıştığını öğrenebiliriz.
|