<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. -->
<refentry xml:id="function.db2-rollback" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>db2_rollback</refname>
  <refpurpose>
   Rolls back a transaction
  </refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>bool</type><methodname>db2_rollback</methodname>
   <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
  </methodsynopsis>

  <para>
   Rolls back an in-progress transaction on the specified connection resource and
   begins a new transaction. PHP applications normally default to AUTOCOMMIT
   mode, so <function>db2_rollback</function> normally has no effect unless
   AUTOCOMMIT has been turned off for the connection resource.
  </para>

 </refsect1>
 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>connection</parameter></term>
     <listitem>
      <para>
       A valid database connection resource variable as returned from
       <function>db2_connect</function> or <function>db2_pconnect</function>.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>
 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.success;
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title>Rolling back a DELETE statement</title>
    <para>
     In the following example, we count the number of rows in a table, turn
     off AUTOCOMMIT mode on a database connection, delete all of the rows in
     the table and return the count of <literal>0</literal> to prove that the
     rows have been removed. We then issue <function>db2_rollback</function>
     and return the updated count of rows in the table to show that the number
     is the same as before we issued the DELETE statement. The return to the
     original state of the table demonstrates that the roll back of the
     transaction succeeded.
    </para>
    <programlisting role="php">
<![CDATA[
<?php
$conn = db2_connect($database, $user, $password);

if ($conn) {
    $stmt = db2_exec($conn, "SELECT count(*) FROM animals");
    $res = db2_fetch_array( $stmt );
    echo $res[0] . "\n";
    
    // Turn AUTOCOMMIT off
    db2_autocommit($conn, DB2_AUTOCOMMIT_OFF);
   
    // Delete all rows from ANIMALS
    db2_exec($conn, "DELETE FROM animals");
    
    $stmt = db2_exec($conn, "SELECT count(*) FROM animals");
    $res = db2_fetch_array( $stmt );
    echo $res[0] . "\n";
    
    // Roll back the DELETE statement
    db2_rollback( $conn );
    
    $stmt = db2_exec( $conn, "SELECT count(*) FROM animals" );
    $res = db2_fetch_array( $stmt );
    echo $res[0] . "\n";
    db2_close($conn);
}
?>
]]>
    </programlisting>
    &example.outputs;
    <screen>
<![CDATA[
7
0
7
]]>
    </screen>
   </example>
  </para>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>db2_autocommit</function></member>
    <member><function>db2_commit</function></member>
   </simplelist>
  </para>
 </refsect1>

</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
