<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'pdo.begintransaction.php',
    1 => 'PDO::beginTransaction',
    2 => 'Startet eine Transaktion',
  ),
  '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' => 'de',
    '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">Startet eine Transaktion</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-pdo.begintransaction-description">
  <h3 class="title">Beschreibung</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">
   Deaktiviert den Autocommit-Modus. Wenn der Autocommit-Modus deaktiviert
   ist, werden Änderungen, die über die Instanz eines PDO-Objekts an der
   Datenbank vorgenommen werden, erst dann bestätigt, wenn die Transaktion
   durch den Aufruf von <span class="methodname"><a href="pdo.commit.php" class="methodname">PDO::commit()</a></span> beendet wird.
   Wenn <span class="methodname"><a href="pdo.rollback.php" class="methodname">PDO::rollBack()</a></span> aufgerufen wird, werden alle
   Änderungen an der Datenbank rückgängig gemacht und die Verbindung wird
   wieder in den Autocommit-Modus versetzt.
  </p>
  <p class="para">
   Einige Datenbanken, darunter auch MySQL, führen automatisch ein implizites
   COMMIT durch, wenn innerhalb einer Transaktion eine DDL- (Database
   Definition Language) Anweisung wie DROP TABLE oder CREATE TABLE ausgeführt
   wird. Durch das implizite COMMIT wird verhindert, dass andere Änderungen,
   die in dieser Transaktion vorgenommen wurden, rückgängig gemacht werden
   können.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-pdo.begintransaction-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">Diese Funktion besitzt keine Parameter.</p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-pdo.begintransaction-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Gibt bei Erfolg <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> zurück. Bei einem Fehler wird <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgegeben.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-pdo.begintransaction-errors">
  <h3 class="title">Fehler/Exceptions</h3>
  <p class="para">
   Wenn bereits eine Transaktion gestartet wurde oder der Treiber keine
   Transaktionen unterstützt, wird eine <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span>
   ausgelöst.
  </p>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: <span class="simpara">Eine Exception wird auch dann ausgelöst, wenn das Attribut <strong><code><a href="pdo.constants.php#pdo.constants.attr-errmode">PDO::ATTR_ERRMODE</a></code></strong> nicht <strong><code><a href="pdo.constants.php#pdo.constants.errmode-exception">PDO::ERRMODE_EXCEPTION</a></code></strong> ist.</span></p></blockquote>
 </div>


 <div class="refsect1 examples" id="refsect1-pdo.begintransaction-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Rückgängigmachen (Rollback) einer Transaktion</strong></p>
    <div class="example-contents"><p>
     Im folgenden Beispiel wird eine Transaktion gestartet und es werden zwei
     Anweisungen ausgeführt, die die Datenbank verändern, bevor die Änderungen
     rückgängig gemacht werden. Bei MySQL wird die Transaktion jedoch durch
     die Anweisung DROP TABLE automatisch bestätigt, sodass keine der
     Änderungen dieser Transaktion rückgängig gemacht wird.
    </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">/* Starten einer Transaktion, wobei Autocommit deaktiviert wird */<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">/* Ändern des Datenbankschemas und der Daten */<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">/* Erkennen eines Fehlers und Zurücknehmen der Änderungen */<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">/* Die Datenbankverbindung ist nun wieder im Autocommit-Modus */<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">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="pdo.commit.php" class="methodname" rel="rdfs-seeAlso">PDO::commit()</a> - Best&auml;tigt eine Transaktion</span></li>
    <li><span class="methodname"><a href="pdo.rollback.php" class="methodname" rel="rdfs-seeAlso">PDO::rollBack()</a> - Macht eine Transaktion r&uuml;ckg&auml;ngig (Rollback)</span></li>
    <li><a href="pdo.transactions.php" class="link">Transaktionen und Autocommit</a></li>
   </ul>
  </p>
 </div>


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