Transaction
Bir veya daha fazla işlemden oluşan tek bir iş birimidir. Bir PostgreSQL işlemi
atomik(atomic), tutarlı(consistent), izole edilmiş(isolated) ve kalıcıdır(durable).
-Atomik olması, işlemin ya hep ya hiç şeklinde tamamlanmasıdır (Bir sorun durumunda
commit edildi ise yazılır commit edilemedi ise rollback edilir).
-Tutarlı olması, veritabanına yazılan verilerde yapılan değişikliğin geçerli olmasını ve
önceden tanımlanmış kurallara uymasını garanti eder.
-İzole edilmesi, işlem bütünlüğünün diğer işlemlere nasıl görüneceğini belirler.
-Dayanıklı olması taahhüt edilen işlemlerin veri tabanında kalıcı olarak saklanmasını
garanti eder.
ÖRNEK: Hesaplar adında bir tablo oluşturup veri girelim.
DROP TABLE IF EXISTS hesaplar; CREATE TABLE hesaplar ( id INT GENERATED BY DEFAULT AS IDENTITY, ad VARCHAR(100) NOT NULL, bakiye DEC(15,2) NOT NULL, PRIMARY KEY(id));
Begin Transaction (İşlemi Başlatma)
INSERT INTO hesaplar(ad,bakiye) VALUES(‘ALI’,10000);
id için değer girmedik. GENERATED BY DEFAULT AS IDENTITY özelliğinden
dolayı id değeri otomatik girildi. İstenirse girilebilir.
PostgreSQL, hesaplar tablosuna hemen yeni bir satır ekledi. Bu durumda, işlemin ne
zaman başladığı bilinemez ve geri alma gibi değişiklik engellenemez.
Bir işlemi başlatmak için şu ifadeler kullanılır:
BEGIN TRANSACTION; BEGIN WORK ; BEGIN;
Örneğin; hesaplar tablosuna yeni bir satır ekleyelim ve yeni bir işlem başlatalım.
INSERT INTO hesaplar(id,ad,bakiye) VALUES( 2,’MERT’,20000);
Şu an kullanmakta olduğumuz sessionda SELECT * FROM hesaplar; sorgusunu
çalıştırdığımızda yeni eklediğimiz satırı görüyoruz. Ancak yeni bir session(oturum)
başlatıp aynı sorguyu çalıştırırsak eklediğimiz 2.satırı göremeyiz. (Kullanılan uygulamadaautocommit açık ise otomatik olarak commit eder.)
