<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysqli.quickstart.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'mysqli.quickstart.transactions.php',
    1 => 'Support API pour les transactions',
    2 => 'Support API pour les transactions',
  ),
  'up' => 
  array (
    0 => 'mysqli.quickstart.php',
    1 => 'Guide de d&eacute;marrage rapide',
  ),
  'prev' => 
  array (
    0 => 'mysqli.quickstart.multiple-statement.php',
    1 => 'Requ&ecirc;tes multiples',
  ),
  'next' => 
  array (
    0 => 'mysqli.quickstart.metadata.php',
    1 => 'Les m&eacute;ta-donn&eacute;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/mysqli/quickstart.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqli.quickstart.transactions" class="section">
  <h2 class="title">Support API pour les transactions</h2>
  <p class="para">
   Le serveur MySQL supporte les transactions suivant le moteur de stockage utilisé.
   Depuis MySQL 5.5, le moteur de stockage par défaut est InnoDB.
   InnoDB a un support complet des transactions ACID.
  </p>
  <p class="para">
   Les transactions peuvent soit être contrôlées en utilisant SQL, soit par des appels API.
   Il est recommandé d&#039;utiliser les appels API pour activer ou désactiver
   le mode <code class="literal">autocommit</code> et pour valider et annuler les transactions.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Définir le mode <code class="literal">autocommit</code> via SQL ou via l&#039;API</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />mysqli_report</span><span style="color: #007700">(</span><span style="color: #0000BB">MYSQLI_REPORT_ERROR </span><span style="color: #007700">| </span><span style="color: #0000BB">MYSQLI_REPORT_STRICT</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"example.com"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Recommandé : utilisation de l'API pour contrôler la configuration des transactions<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">autocommit</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Ne sera pas monitoré et reconnu par le plugin de réplication et de balance de charge<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">'SET AUTOCOMMIT = 0'</span><span style="color: #007700">);</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   Les paquets de fonctionnalités additionnelles, comme les plugins de réplication
   et de balance de charge peuvent monitorer les appels API. Le plugin de réplication
   offre une sécurité sur les transactions lors de la balance de charge, si
   les transactions sont contrôlées avec des appels API. La sécurité des
   transactions lors de la balance de charge n&#039;est pas disponible si les requêtes
   SQL sont utilisées pour définir le mode <code class="literal">autocommit</code>, pour valider ou annuler
   une transaction.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Validation et annulation d&#039;une transaction</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />mysqli_report</span><span style="color: #007700">(</span><span style="color: #0000BB">MYSQLI_REPORT_ERROR </span><span style="color: #007700">| </span><span style="color: #0000BB">MYSQLI_REPORT_STRICT</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"example.com"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">autocommit</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"INSERT INTO test(id) VALUES (1)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">rollback</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"INSERT INTO test(id) VALUES (2)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">commit</span><span style="color: #007700">();</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   Veuillez noter que le serveur MySQL ne peut pas annuler toutes les requêtes.
   Quelques requêtes requièrent une validation implicite.
  </p>
  <p class="para">
   <strong>Voir aussi</strong>
  </p>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="mysqli.autocommit.php" class="methodname">mysqli::autocommit()</a></span></li>
    <li><span class="methodname"><a href="mysqli.begin-transaction.php" class="methodname">mysqli::begin_transaction()</a></span></li>
    <li><span class="methodname"><a href="mysqli.commit.php" class="methodname">mysqli::commit()</a></span></li>
    <li><span class="methodname"><a href="mysqli.rollback.php" class="methodname">mysqli::rollback()</a></span></li>
   </ul>
  </p>
 </div><?php manual_footer($setup); ?>