Mysql Commit/RollBack (Tablodan Silinen Datayı Kurtarma)

Mysql Commit/RollBack,

Commit işlemi veritabanında tablolar üzerinde yapılan herhangi bir işlemin
‘örneğin insert,update,delete’ tablolara kalıcı olarak yazılma işlemidir. Mysql
kurulumunda AUTOCOMMIT özelliği default olarak 1 yani aktif olarak gelir.
Bu yüzden pek fazla kişi böyle bir özelliğin farkında olmaz. AUTOCOMMIT
aktif olduğu iÇin tablolar üzerindeki her hareketimiz otomatik olarak anında
commit edilmiş olur. Böylece yaptığımız işlemi geri alma şansımız olmaz.
Yanlış yaptığımız bir update işlemi kalıcı olarak tablolara yazılmış olur.

Bizim öncelikle bu özelliği, transaciton table özelliği olan innodb tablolarda
kullanabileceğimizi bilmemiz gerekmektedir.

İlk aşamada Mysql üzerindeki autocommit özelliğinin aÇık mı yoksa kapalı mı
olduğuna bakalım;

SELECT @@AUTOCOMMIT;

SonuÇ 1 olarak dönerse aÇık ,0 olarak dönerse kapalı anlamındadır.

Daha sonra autocommit özelliğini kapatalım;

SET AUTOCOMMIT=0

Bu komut satırını da Çalıştırdığımızda bu özelliği kapatmış oluruz.
Tekrardan SELECT @@AUTOCOMMIT; derseniz 0 olarak sonucun döndüğünü
görürsünüz.

şimdi bir örnek üzerinde anlatmaya Çalışayım.

Begin;
Update personel
set maas=10000;
where adi=’tayfur’;

Yukarıdaki sorguyu Çalıştırdığımızda tayfur isimli personelin maasını 10000 tl
yapmış olduk. Dikkatinizi Çekmiş olmalı Update işleminden önce Begin
keywordunü kullandım. Evet, eğer sorgularımız da BEGIN keyword ‘u kullanmazsak
rollback yapamayız, yani tayfur isimli personelin maasını tekrar eski haline döndüremeyiz.

şimdi ise update ‘imizi yaptık, yaptığımız update işleminin doğruluğundan eminsek

COMMIT;

keywordunu yazıp Çalıştırıyoruz. Böylece yaptığımız update işlemi
kalıcı olarak tabloya yazılmış oluyor. Yok emin değilsek, yaptığımız update işlemi yanlış ise;

ROLLBACK;

keywordunu yazıp Çalıştırıyoruz. Böylece yaptığımız update işlemini geri almış oluyoruz.

Gördüğünüz gibi COMMIT/ROLLBACK işlemi kesinlikle hayat kurtarıcıdır.Ve kullanmanızı
tavsiye ederim.

Sizlere birkaÇ püf noktayı da söylemek istiyorum;

Ürneğin update işlemi yaptınız , commit veye rollback demediniz sonra başka bir işlem daha
yaptınız update ,delete veya insert hiÇ fark etmez, bir önceki update işleminiz
otomatik olarak commit olmuş olur ve rollback yapma şansınız kalmaz. Benim sizlere
tavsiyem acele etmeden, her yaptığınız işlemin doğruluğundan emin olup, commit veya rollback
yapıp bir sonraki işleme geÇmeniz.

Bir sonraki makaleler de görüşmek dileğiyle;

Tayfur BÖLER
Database Administrator