10 Nisan 2009 Cuma

ORACLE Auto Increment Kolon/Alan Oluşturma

MS-SQL kullanmış olanlar bilirler auto increment kolon oluşturmak iki tıklama kadar kolaydır fakat ORACLE a gelince işler biraz farklı yürüyor, öncelikle tablo üzerinde bir SEQUENCE oluşturmak gerekiyor ve bu SEQUENCE i kullanarak tabloya yapılan işlemler esnasında bir TRIGGER ile bu SEQUENCE içerisindeki next değeri almak gerekiyor.

Önce bir tablo oluşturalım:

SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));

Daha sonra bir SEQUENCE oluşturalım:

-- increment faktörünü ve başlangıç değerini 1 olarak belirledik.
SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;

Şimdi oluşturduğumuz SEQUENCE i tabloya insert öncesinde kullanabiliriz:

CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON test
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
END;
/

Trigger i de yarattığımıza göre artık birkaç insert cümlesi ile testimizi yapabiliriz:

-- Burada öemli olan insert edeceğimiz value lar içerisinde id ye yer vermememiz, id değeri zaten auto increment bir değer olduğundan SEQUENCE i kullanarak bir sonraki değerini otomatik olarak alacaktır.

SQL> INSERT INTO test (name) VALUES ('Jon');

1 row created.

SQL> INSERT INTO test (name) VALUES (’Bork’);

1 row created.

SQL> INSERT INTO test (name) VALUES (’Matt’);

1 row created.

Sonuçlara bakarsak id değerinin otomatik değerler aldığını görürüz:

SQL> SELECT * FROM test;

ID NAME
———- ——————————
1 Jon
2 Bork
3 Matt

SEQUENCE in bağımsız olarak commit edildikten sonra update edilmesi sayesinde birden fazla kullanıcının aynı tabloya aynı anda insert etmesi bir sorun oluşturmayacaktır.

Hiç yorum yok:

Yorum Gönder

Popüler Yayınlar