Files
doc-fr/reference/oci8/functions/oci-commit.xml
2021-09-24 04:13:47 +01:00

166 lines
5.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: ae5ececd1763fea7c2b3f47d913c7236ff6e4467 Maintainer: yannick Status: ready -->
<!-- Reviewed: yes Maintainer: mikaelkael -->
<refentry xml:id="function.oci-commit" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>oci_commit</refname>
<refpurpose>Valide les transactions Oracle en cours</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>oci_commit</methodname>
<methodparam><type>resource</type><parameter>connection</parameter></methodparam>
</methodsynopsis>
<para>
Valide toutes les transactions en cours sur la connexion Oracle
<parameter>connection</parameter>. Une validation rend permanentes
toutes les modifications, en libérant tous les verrous.
</para>
<para>
Une transaction commence lorsque la première requête SQL
qui modifie des données est exécutée avec la fonction
<function>oci_execute</function> en utilisant le drapeau
<constant>OCI_NO_AUTO_COMMIT</constant>. Les modifications suivantes
faîtes par d'autres requêtes deviennent parties intégrantes de la
même transaction. Les données modifiées par une transaction sont
temporaires tant que la transaction n'est pas validée ou annulée.
Les autres utilisateurs de la base de données ne verront ces modifications
qu'une fois la transaction validée.
</para>
<para>
Lors de l'insertion ou de la mise à jour de données, l'utilisation
des transactions est recommandée afin de garantir la consistance
relationnelle des données, mais aussi afin d'augmenter les performances.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>connection</parameter></term>
<listitem>
<para>
Un identifiant de connexion Oracle, retourné par la fonction
<function>oci_connect</function>, <function>oci_pconnect</function>,
ou <function>oci_new_connect</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>Exemple avec <function>oci_commit</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Insertion dans plusieurs tables, avec une annulation des modifications si des erreurs surviennent
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");
// Le drapeau OCI_NO_AUTO_COMMIT indique à Oracle de ne pas valider les insertions automatiquement.
/// Utilisez le drapeau OCI_DEFAULT pour PHP <= 5.3.1. Les 2 sont équivalents
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
$e = oci_error($stid);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
$stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
$e = oci_error($stid);
oci_rollback($conn); // Annulation des modifications sur les 2 tables
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
// Valide les modifications sur les 2 tables
$r = oci_commit($conn);
if (!$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Les transactions sont automatiquement annulées lorsque vous
fermez la connexion, ou lorsque le script se termine, un des deux
arrivant le premier. Vous devez explicitement appeler la fonction
<function>oci_commit</function> pour valider la transaction.
</para>
<para>
Chaque appel à la fonction <function>oci_execute</function> qui
utilise le mode <constant>OCI_COMMIT_ON_SUCCESS</constant>
explicitement ou par défaut, validera toutes les transactions
précédentes non validées à ce stade.
</para>
<para>
Toutes les requêtes Oracle comme <literal>CREATE</literal>
ou <literal>DROP</literal> validera également toutes les
transactions non validées.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>oci_execute</function></member>
<member><function>oci_rollback</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
-->