<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.pdo.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'pdo.begintransaction.php',
    1 => 'PDO::beginTransaction',
    2 => 'Инициализация транзакции',
  ),
  'up' => 
  array (
    0 => 'class.pdo.php',
    1 => 'PDO',
  ),
  'prev' => 
  array (
    0 => 'class.pdo.php',
    1 => 'PDO',
  ),
  'next' => 
  array (
    0 => 'pdo.commit.php',
    1 => 'PDO::commit',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/pdo/pdo/begintransaction.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="pdo.begintransaction" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">PDO::beginTransaction</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.1.0, PHP 7, PHP 8, PECL pdo &gt;= 0.1.0)</p><p class="refpurpose"><span class="refname">PDO::beginTransaction</span> &mdash; <span class="dc-title">
   Инициализация транзакции
  </span></p>

 </div>

 <div class="refsect1 description" id="refsect1-pdo.begintransaction-description">
  <h3 class="title">Описание</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>PDO::beginTransaction</strong></span>(): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   Выключает режим автоматической фиксации транзакции. В то время как режим
   автоматической фиксации выключен, изменения, внесённые в базу данных через объект
   экземпляра PDO, не применяются, пока вы не завершите транзакцию, вызвав
   <span class="methodname"><a href="pdo.commit.php" class="methodname">PDO::commit()</a></span>. Вызов <span class="methodname"><a href="pdo.rollback.php" class="methodname">PDO::rollBack()</a></span> откатит
   все изменения в базе данных и вернёт соединение к режиму автоматической фиксации.
  </p>
  <p class="para">
   Некоторые базы данных, включая MySQL, автоматически выполняют неявную
   фиксацию, когда выражения языка описания данных (DDL), такие как
   DROP TABLE или CREATE TABLE, находятся внутри транзакции. Неявная
   фиксация предотвратит вам откат любых изменений, сделанных в этой транзакции.
  </p>

 </div>


 <div class="refsect1 parameters" id="refsect1-pdo.begintransaction-parameters">
  <h3 class="title">Список параметров</h3>
  
<p class="para">
 Сигнатура функции не содержит параметров.
</p>

 </div>


 <div class="refsect1 returnvalues" id="refsect1-pdo.begintransaction-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="para">
   Функция возвращает <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, если выполнилась успешно, или <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, если возникла ошибка.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-pdo.begintransaction-errors">
  <h3 class="title">Ошибки</h3>
  <p class="para">
   Выбрасывает <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span>, если транзакция уже стартовала, либо
   если драйвер не поддерживает транзакции.
  </p>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: <span class="simpara">Исключение
выбрасывается, даже если для атрибута <strong><code><a href="pdo.constants.php#pdo.constants.attr-errmode">PDO::ATTR_ERRMODE</a></code></strong>
не установили режим <strong><code><a href="pdo.constants.php#pdo.constants.errmode-exception">PDO::ERRMODE_EXCEPTION</a></code></strong>.</span></p></blockquote>
 </div>


 <div class="refsect1 examples" id="refsect1-pdo.begintransaction-examples">
  <h3 class="title">Примеры</h3>
  <p class="para">
   <div class="example" id="example-1"><p><strong>Пример #1 Откат транзакции</strong></p>
    <div class="example-contents"><p>
     Следующий пример начинает транзакцию и выполняет два выражения,
     что изменяет базу данных до отката изменений. В MySQL,
     тем не менее, выражение DROP TABLE автоматически фиксирует
     транзакцию так, что ни одно из изменений транзакции не откатывается.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Начало транзакции, отключение автоматической фиксации */<br /></span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">beginTransaction</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* Изменение схемы базы данных и данных */<br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">exec</span><span style="color: #007700">(</span><span style="color: #DD0000">"DROP TABLE fruit"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">exec</span><span style="color: #007700">(</span><span style="color: #DD0000">"UPDATE dessert<br />    SET name = 'hamburger'"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Распознаем ошибку и откатываем изменения */<br /></span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">rollBack</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* Соединение с базой данных снова в режиме автоматической фиксации */<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-pdo.begintransaction-seealso">
  <h3 class="title">Смотрите также</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="pdo.commit.php" class="methodname" rel="rdfs-seeAlso">PDO::commit()</a> - Фиксирует транзакцию</span></li>
    <li><span class="methodname"><a href="pdo.rollback.php" class="methodname" rel="rdfs-seeAlso">PDO::rollBack()</a> - Откат транзакции</span></li>
    <li><a href="pdo.transactions.php" class="link">Транзакции и автоматическая фиксация</a></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>