Üye olmak ve diğer içeriklerden de faydalanabilmek için buraya tıklayınız.

Üye olup şifrenizi unuttuysanız "Şifremi Unuttum" adresini kullanabilirsiniz

Forum kurallarını okumak için lütfen buraya tıklayınız .

NASIL YAPILIR? Veritabanı işlemlerin'de begintransaction

arcface

Âyinesi iştir kişinin lafa bakılmaz
25 Eyl 2020
210
150
48
istanbul
www.arcface.net
ΤΙΚ
💎379
Merhabalar,

Benim için hayat kurtaran bir işlev bazen aynı anda 20 farklı alanda ve 3-4 farklı veritabanı üzerinde değişiklikler yapıyorum ve bu işlev olmasaydı bin satırlık kod 30-40 binlere çıkmak zorunda kalırdı.

begintransaction Nedir?

Veritabanı üzerinde yaptığınız işlemleri begintransaction ile en başta başlattığınız da bu işlemler toplanır ve siz yaptığınız işlemleri commit etmediğiniz sürece de veritabanı üzerinde bu işlemler gerçekleşmez. Bir işlev yaptınız ve hata kodu döndü rollback ile işlemi geri alabilirsiniz.

Örnek bir kullanım göstereyim şuan kodlamasını yaptığım bir proje üzerinden anlatım yapayım rahat şekilde kavrayacaksınız.


PHP:
Değerli ziyaretçimiz lütfen içeriği görüntüleyebilmek için Giriş yap ya da Kayıt ol to view codes content!

Öncelikle işlemlerimin en başına gelip bir transaction işlemi başlatıyorum o andan itibaren yazılan her işlev ben commit edene kadar geçerli kılınmayacaktır.

Ek olarak ben pdo kullandığım için ve mysqli'de de aynı durum geçerli pdo classs'ı içinde bir fonksiyon bulunduğu için direkt begintransaction yazarak kullanabiliyorum ama farklı direkt sql olarak da şu şekil'de kullanabilirsiniz.

PHP:
Değerli ziyaretçimiz lütfen içeriği görüntüleyebilmek için Giriş yap ya da Kayıt ol to view codes content!

Burada yaptığım işlem bir mail hesabını veritabanı üzerinden silme ama bir kaç tablo üzerinde işlem bulunduğu için herhangi bir alan da veritabanı sorunu oluşur ise sistem sapıtacağından hayat kurtaran bir işlevdir transaction işlevi böyle bir şey yakalarsam direkt rollback yaparak komutları iptal ediyorum.

Önce mail hesabına ait mailleri siliyorum sonra da mail hesabını kaldırıyorum eğer transaction kullanmasaydım mailbox'daki iletiler silinip hesap silinmezse hesabın posta kutusu açılamadığı için hata verecekti veya tam tersi mailler silinmeyip hesap silinseydi o zaman da hangi hesaba ait olduğu bilinmeyen binlerce posta spam gibi veritabanında yer alacaktı. Kullanım alanı çok fazla ama ben özellikle ödeme sistemlerinde kullanıyorum çünkü o alanda çok fazla veritabanı işlemi gerçekleştiriyorum.

Anlamadığınız bir kısım olur ise konu altında sorabilirsiniz.
 
  • Beğen
Tepkiler: cihatmacit