(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDO::beginTransaction — Bir toplu hareketi ilklendirir
Özdevinimli gönderim kipini kapatır. Özdevinimli kip kapalıyken PDO nesne örneği üzerinden veritabanında yapılan değişiklikler PDO::commit() çağrısı ile toplu hareket tamamlanmadan veritabanında bir değişikliğe yol açmaz. Toplu hareketlerle yapılan değişiklikleri geri almak ve tekrar özdevinimli kipe dönmek için PDO::rollBack() yöntemini kullanabilirsiniz.
MySQL dahil bazı veritabanları, bir toplu hareketin içinde DROP TABLE veya CREATE TABLE gibi bir veritabanı tanımlama dili deyimi kullanıldığında özdevinimli olarak örtük bir PDO::commit() yaparlar. Örtük PDO::commit(), toplu hareket içindeki diğer değişikliklerin de geri alınmasına engeller.
Başarı durumunda TRUE
, başarısızlık durumunda FALSE
döner.
Örnek 1 - ir toplu hareketi geri almak
Aşağıdaki örnekte bir toplu hareket başlatılmakta, değişiklikler geri alınmadan önce iki deyim çalıştırılmaktadır. Ancak, MySQL'de DROP TABLE deyimi özdevinimli bir PDO::commit() çağrısına sebep olduğundan bu deyimden önce toplu hareket dahilinde yapılan hiçbir hareket geri alınamaz.
<?php
/* Özdevinimli gönderim kipini kapatıp bir toplu hareket başlatalım */
$dbh->beginTransaction();
/* Veritabanı şemasını ve verisini değiştirgelim */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Yanlışı farkedip hareketleri geri alıyoruz */
$dbh->rollBack();
/* Veritabanı bağlantısı tekrar özdevinimli gönderim kipinde. */
?>