(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDO::rollBack — Bir toplu hareketi geri alır
PDO::beginTransaction() ile başlatılan toplu hareketi geri alır. Bir toplu hareket etkin değilken bu yöntemin çağrılması bir hataya sebep olur.
Eğer veritabanı özdevinimli gönderim kipindeyse, toplu hareket geri alındıktan sonra tekrar özdevinimli gönderim kipine dönülür.
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 - Bir toplu hareketin geri alınması
Aşağıdaki örnekte bir toplu hareket başlatılmakta, değişiklikleri geri almadan önce veritabanında değişiklik yapan iki deyim gönderilmektedir. Bununla birlikte MySQL'de, DROP TABLE deyimi hareketi özdevinimli olarak COMMIT ettiğinden toplu harekete dahil hiçbir değişiklik artık geri alınamaz.
<?php
/* Özdevinimli gönderimi kapatıp bir hareket başlatalım */
$dbh->beginTransaction();
/* Veritabanı şemasını ve verisini değiştirelim */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Yanlışı farkedip değişiklikleri geri alıyoruz */
$dbh->rollBack();
/* Veritabanı bağlantısı şimdi özdevinimli gönderim kipinde */
?>