PostgreSQL BEGIN, ROLLBACK ve COMMIT, SAVEPOINT Deyimleri

PostgreSQL BEGIN, ROLLBACK ve COMMIT, SAVEPOINT Deyimleri,

Transaction Nedir ? İsimli yazımda Begin ,Rollback ve Committen bahsetmiştim .

Bu yazımda bunlar ile ilgili örnek vereceğiz.

Aşağıdaki örnekte  begin ile transactionumuzu başlatalım.

begin ;
create table deneme
(id serial,
adi varchar(100)
Soyadi varchar(150)
)

Yukarıdaki sorguyu çalıştırdığımızda sorgu sonucuna bakarak tablomuzun oluştuğunu görüyoruz.

Tablomuz oluştu fakat Tables tabına gelip kontrol ettiğimizde tablomuzun oluştuğunu göremiyoruz.  Bunun sebebi transaction’ı begin komutu ile açtık fakat kapatmadık bundan dolayı bizden commit ya da rollback beklemektedir.

Commit yaparak ilgili transactionımızı sonlandıralım ve tablomuz oluşmuş mu kontrol edelim.

Tabloyu create ettiğimiz pencerede commit dedikten sonra Tables’a refresh diyerek kontrol ediyoruz ve oluştuğunu görüyoruz.

Commit yapılsaydı bu tablomuz hiç oluşmamış gibi kabul edilip transaction sonlandıralacaktı.

Commit ,rollback i anladık peki savepoint nedir?

Savepoint komutu transaction içerisinde üç işlem yaptığınızı varsayalım fakat  ikinci işleme dönmek istiyorsunuz rollback yapılsaydı yaptığınız her işlem başa döneceği ikinci işleme savepoint savepoint_ismi yazarak o işleme dönebilirsiniz.

Örnek yaparak pekiştirelim.

Yukarıda tek transaction içerisinde deneme isimli tablo oluşturduk ve bu transaction içerisinde verileri ekledik. İki insert  yaptıktan sonra savepoint yaptık ve bir insert cümlesi daha ekledik ve bundan sonra son insert  yapmak istemediğimiz için “rollback to point”  komutunu kullanarak oluşturduğumuz save point’e geldik ve sorgu çektiğimizde sadece   ilk iki verinin eklendiğini görüyoruz.

 

Select*from ile verileri gördük fakat  deneme adında hala tablomuz yok bunun sebebi  commit demediğimizden rollback ile savepointe döndük fakat  diğer tablo oluşturma ve insert cümlelerinde yazılması için commit etmemiz gerekiyor.

Commit edildikten sonra verilerimizi tablomuz oluştu ve verileri eklenmiş şekilde görüyoruz.

Loading