Files
php-doc-ru/reference/oci8/functions/oci-commit.xml
2023-06-20 12:12:04 +03:00

157 lines
5.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5e41012cfdf8f2eff5fa56de446c7656afac536c Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.oci-commit" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>oci_commit</refname>
<refpurpose>Подтверждает транзакцию базы данных</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>
Подтверждает транзакцию соединения <parameter>connection</parameter>.
Подтверждение завершает текущую транзакцию и делает все изменения
постоянными. Она также освобождает все установленные блокировки.
</para>
<para>
Транзакция начинается при первом SQL-запросе, изменяющим данные,
который был запущен с помощью функции <function>oci_execute</function>
и флага <constant>OCI_NO_AUTO_COMMIT</constant>. Последующие изменения
данных от других запросов также становятся частью данной транзакции.
Изменения, сделанные в транзакции, являются временными до тех пор,
пока транзакция не будет зафиксирована или пока не будет произведён её откат.
Другие пользователи базы данных не смогут увидеть изменения до их подтверждения.
</para>
<para>
При вставке или обновлении данных рекомендуется использовать транзакции
для сохранения целостности данных и увеличения производительности.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>connection</parameter></term>
<listitem>
<para>
Идентификатор соединения Oracle, полученный из функций
<function>oci_connect</function>, <function>oci_pconnect</function>
или <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>Пример использования <function>oci_commit</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Вставка в несколько таблиц, откат изменений в случае возникновения ошибки
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");
// Флаг OCI_NO_AUTO_COMMIT сообщает Oracle не фиксировать запрос INSERT при его поступлении
$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); // откат изменений из обоих таблиц
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
// Фиксация изменений в обоих таблицах
$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>
Транзакции будут автоматически откачены при закрытии соединения или
окончании скрипта (в зависимости от того, что случится раньше).
Для подтверждения транзакции необходимо явно вызвать функцию
<function>oci_commit</function>.
</para>
<para>
Все вызовы <function>oci_execute</function>, явно или по умолчанию
использующие режим <constant>OCI_COMMIT_ON_SUCCESS</constant>
зафиксируют любую предыдущую незафиксированную транзакцию.
</para>
<para>
Любой DDL-запрос Oracle, такой как <literal>CREATE</literal> или <literal>DROP</literal>
автоматически подтверждает любую незавершённую транзакцию.
</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
-->