(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_commit — Valida las transacciones Oracle en curso
Valida todas las transacciones en curso en la conexión Oracle
connection
. Una validación hace permanentes
todas las modificaciones, liberando todos los bloqueos.
Una transacción comienza cuando se ejecuta la primera consulta SQL
que modifica datos con la función
oci_execute() utilizando el flag
OCI_NO_AUTO_COMMIT
. Las modificaciones siguientes
realizadas por otras consultas forman parte de la misma transacción. Los datos
modificados por una transacción son temporales hasta que la transacción sea
validada o revertida. Otros usuarios de la base de datos no verán estas
modificaciones hasta que la transacción sea validada.
Al insertar o actualizar datos, el uso de transacciones es recomendado para garantizar la consistencia relacional de los datos, así como para mejorar el rendimiento.
connection
Un identificador de conexión Oracle, devuelto por la función oci_connect(), oci_pconnect(), o oci_new_connect().
Ejemplo #1 Ejemplo con oci_commit()
<?php
// Inserción en múltiples tablas, con cancelación de las modificaciones si ocurren errores
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");
// El flag OCI_NO_AUTO_COMMIT indica a Oracle que no valide las inserciones automáticamente.
$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); // Cancelación de las modificaciones en las 2 tablas
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
// Valida las modificaciones en las 2 tablas
$r = oci_commit($conn);
if (!$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
Nota:
Las transacciones son automáticamente revertidas al cerrar la conexión, o cuando el script finaliza, cualquiera de los dos que ocurra primero. Debe llamarse explícitamente a la función oci_commit() para validar la transacción.
Cada llamada a la función oci_execute() que utiliza el modo
OCI_COMMIT_ON_SUCCESS
explícitamente o por omisión, validará todas las transacciones no validadas hasta ese punto.Todas las consultas Oracle como
CREATE
oDROP
también validarán todas las transacciones no validadas.