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.
Kendi kullandığım bazı notları hızlı erişim sağlayabilmek için bu sayfaya ekliyorum, bilgi paylaştıkça güzeldir (:
10 Nisan 2009 Cuma
Kaydol:
Kayıt Yorumları (Atom)
Popüler Yayınlar
-
NVARCHAR ve VARCHAR çok fazla kullandığımız veri tipleri arasında, fakat geçenlerde bir sohbet sırasında iki veri tipi arasındaki farkları t...
-
Kullandığımız Oracle versiyonu bazı özelliklerin kullanılıp kullanılmması açısından önemli olabilir, yeni eklenen özellikleri eski versiyonl...
-
Üzerlerinde parent-child ilişkisi tanımlanmış olan tablolar sayesinde tablolardaki verinin bütünlüğünü korumak daha kolay olabilir, örneğin ...
-
DDL Data Definition Language (DDL) cümleleri veritabanı veya şema yapıları tanımlamak için kullanılırlar. Örneğin: • CREATE - veritabanında ...
-
Tablo üzerinde bir alandaki duplicate, çiftleyen, tekrarlayan, mükerrer kayıtları bulmak ve o kayıt için kaç tane tekrarlayan olduğunu liste...
-
Soru: Oracle da string bir değerin alfanumerik karakterler içerip içermediğini nasıl test ederiz? Cevap: Bir stringi alfanumerik karakterl...
-
Merhaba, Bu yazı sql plus marifetlerini kullanarak iki veritabanı arasında veri kopyalama işlemini nasıl yapabileceğiniz hakkında bilgiler i...
-
Oracle/PLSQL: Oracle Sistem Tabloları Bütün gerçekten ilişkisel olan sistemler sistem bilgilerini saklayan alanlara sahiptir. Sistem ...
-
Gittikçe büyüyen ve data yükü artan tablolar üzerinde sorgu çalıştırmak veya tablo bakımına ait diğer işlemleri gerçekleştirmek zamanla ...
-
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üy...
Hiç yorum yok:
Yorum Gönder