oci_commit
oci_commit
Commits the outstanding database transaction
bool **oci_commit** resource $connection
Commits the outstanding transaction for the
Oracle . A commit ends the
current transaction and makes permanent all changes. It releases
all locks held.
connection
A transaction begins when the first SQL statement that changes data
is executed with using
the flag. Further data
changes made by other statements become part of the same
transaction. Data changes made in a transaction are temporary
until the transaction is committed or rolled back. Other users of
the database will not see the changes until they are committed.
oci_execute``OCI_NO_AUTO_COMMIT
When inserting or updating data, using transactions is recommended for relational data consistency and for performance reasons.
connection
An Oracle connection identifier, returned by
, , or .
oci_connect``oci_pconnect``oci_new_connect
return.success
Voorbeeld: example
<?php
// Insert into several tables, rolling back the changes if an error occurs
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");
// The OCI_NO_AUTO_COMMIT flag tells Oracle not to commit the INSERT immediately
$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); // rollback changes to both tables
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
// Commit the changes to both tables
$r = oci_commit($conn);
if (!$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
Opmerking: > Transactions are automatically rolled back when you close the connection, or when the script ends, whichever is soonest. You need to explicitly call to commit the transaction.
oci_commitAny call to that uses mode explicitly or by default will commit any previous uncommitted transaction.
oci_execute``OCI_COMMIT_ON_SUCCESSAny Oracle DDL statement such as or will automatically commit any uncommitted transaction.
CREATE``DROP
oci_execute``oci_rollback