<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'mysqli.quickstart.transactions.php',
    1 => 'Soporte API para las transacciones',
    2 => 'Soporte API para las transacciones',
  ),
  'up' => 
  array (
    0 => 'mysqli.quickstart.php',
    1 => 'Gu&iacute;a de inicio r&aacute;pido',
  ),
  'prev' => 
  array (
    0 => 'mysqli.quickstart.multiple-statement.php',
    1 => 'Consultas m&uacute;ltiples',
  ),
  'next' => 
  array (
    0 => 'mysqli.quickstart.metadata.php',
    1 => 'Las metadatos',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Soporte API para las transacciones</h2>
  <p class="para">
   El servidor MySQL soporta las transacciones dependiendo del motor de almacenamiento utilizado.
   Desde MySQL 5.5, el motor de almacenamiento por omisión es InnoDB.
   InnoDB tiene un soporte completo de las transacciones ACID.
  </p>
  <p class="para">
   Las transacciones pueden ser controladas utilizando SQL, o mediante llamadas API.
   Se recomienda utilizar las llamadas API para activar o desactivar
   el modo <code class="literal">autocommit</code> y para validar y anular las transacciones.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Definir el modo <code class="literal">autocommit</code> a través de SQL o a través de la 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">// Recomendado: uso de la API para controlar la configuración de las transacciones<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">// No será monitoreado y reconocido por el plugin de replicación y balanceo de carga<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">
   Los paquetes de funcionalidades adicionales, como los plugins de replicación
   y balanceo de carga pueden monitorear las llamadas API. El plugin de replicación
   ofrece seguridad sobre las transacciones durante el balanceo de carga, si
   las transacciones son controladas con llamadas API. La seguridad de
   las transacciones durante el balanceo de carga no está disponible si las consultas
   SQL son utilizadas para definir el modo <code class="literal">autocommit</code>, para validar o anular
   una transacción.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Ejemplo #2 Validación y anulación de una transacción</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">
   Tenga en cuenta que el servidor MySQL no puede anular todas las consultas.
   Algunas consultas requieren una validación implícita.
  </p>
  <p class="para">
   <strong>Ver también</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); ?>