PHP beginTransaction nedir ?

Begin Transaction

Begin Transaction toplu işlemlerin çalışması esnasında oluşan hata durumunda son yapılan değişikliklerin geri alınması için kullanılmaktadır . Daha önceki dersler de begin transaction için farklı bir örnek vermiştik. Şimdi farklı bir örnek ile daha da pekiştirelim . Diyelim ki bir form sayfası oluşturdunuz . Oluşturduğunuz bu form sayfası kullanıcıdan aldığınız verileri veritabanın da 3 farklı tabloya yazdığınızı düşünün . Buraya kadar her şey çok güzel ancak veriler yazılırken tablolardan birindeki kayıt işlemi esnasında hata oluşursa işte bundan sonra işimiz biraz sıkıntıya girer . Çünkü kullanıcının yapmış olduğu diğer 2 tablodaki verilerin hata sonucunda silinmesi gerekecektir. Tek tek bu satırları veri tabanı sorguları ile eski haline getirmek ve işlem yükünü arttırmak yerine begin transaction kullanarak tüm yükten kurtulabiliriz.

Aşağıdaki örneği inceleyerek aslında ne demek istediğimi daha net anlayabilirsiniz .

<?php
/* Oto Commit kipi bu satırda beginTransaction komutuyla birlikte kapatılır ve işlemler için toplu bir hareket başlar. */
$transaction->beginTransaction();

/* Basit bir veritabanı işlemi yapalım ve şemayı ve verileri değiştirelim. */
$sth = $transaction->exec("DROP TABLE meyveler");
$sth = $transaction->exec("UPDATE içecekler SET name = 'muz'");

/* Yukarıdaki güncellemeyi farkediyoruz ve hareketleri geri alıyoruz. */
$transaction->rollBack();

/* rollBack çalıştıktan sonra veritabanı bağlantısı tekrardan oto commit kipine göri dönecektir. */
?>

PDO::beginTransaction 

Begin transaction auto commit modunu kapatır. Bu mod kapandığı zaman PDO veritabanın da yapılan son değişiklik PDO::Commit() ile kalıcı hale getirilmeden veritabanında herhangi bir değişiklik yapmaz.

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0) sürümlerinden itibaren kullanılabilmektedir. PDO::beginTransaction — Toplu bir işlemi önceliklendirir ve geri alınması için olanak sağlar. Konuyu daha iyi anlamak için php’nin resmi web sitesinde de örnekleri inceleyebilirsiniz.  Ayrıca php derslerimiz de ;

Konularını da inceleyin !

Yorum Ekle

E-posta hesabınız yayımlanmayacak.