PDO::beginTransaction
自動コミット モードをオフにしてトランザクションを開始します。
構文
bool PDO::beginTransaction();
戻り値
メソッドの呼び出しに成功した場合は true、それ以外の場合は false。
解説
PDO::beginTransaction で開始されたトランザクションは、PDO::commit または PDO::rollback が呼び出されたときに終了します。
PDO::beginTransaction は PDO::ATTR_AUTOCOMMIT の値によって影響を受けず、PDO::ATTR_AUTOCOMMIT の値に影響を与えません。
前の PDO::beginTransaction が PDO::rollback または PDO::commit で終了する前に PDO::beginTransaction を呼び出すことはできません。
このメソッドが失敗した場合、接続は自動コミット モードに戻ります。
PDO のサポートは Microsoft SQL Server 用 Drivers for PHPのバージョン 2.0 で追加されました。
例
次の例では、「Test」という名前のデータベースと「Table1」という名前のテーブルを使用します。 トランザクションを開始し、コマンドを発行して 2 つの行を追加し、1 つの行を削除します。 コマンドはデーダースに送信され、トランザクションは PDO::commit
で明示的に終了します。
<?php
$conn = new PDO( "sqlsrv:server=(local); Database = Test", "", "");
$conn->beginTransaction();
$ret = $conn->exec("insert into Table1(col1, col2) values('a', 'b') ");
$ret = $conn->exec("insert into Table1(col1, col2) values('a', 'c') ");
$ret = $conn->exec("delete from Table1 where col1 = 'a' and col2 = 'b'");
$conn->commit();
// $conn->rollback();
echo $ret;
?>